Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


617 / 2272 ツリー ←次へ | 前へ→

【10902】DATAの集約方法について pinetree 09/1/5(月) 16:09 質問[未読]
【10905】Re:DATAの集約方法について かわせ 09/1/5(月) 19:24 回答[未読]
【10917】Re:DATAの集約方法について pinetree 09/1/8(木) 16:34 お礼[未読]
【10921】Re:DATAの集約方法について トト 09/1/9(金) 8:57 発言[未読]
【10924】Re:DATAの集約方法について pinetree 09/1/9(金) 13:15 お礼[未読]

【10902】DATAの集約方法について
質問  pinetree  - 09/1/5(月) 16:09 -

引用なし
パスワード
   TABLE-A の DATA を TABLE-B のように
集約した形に作り替えたいのですが、
どのようにしたら良いか分かりません。
方法をご教示ください。


TABLE-A
-------------------------------    
CODE    RANK    POINT    
-------------------------------    
A    1    20        
A    2    30        
A    3    40        
B    1    50        
B    3    60        


TABLE-B
-------------------------------                    
    RANK1    RANK2    RANK3    
CODE    POINT    POINT    POINT    
-------------------------------    
A    20    30    40    
B    50        60

【10905】Re:DATAの集約方法について
回答  かわせ  - 09/1/5(月) 19:24 -

引用なし
パスワード
   ▼pinetree さん:

ずばり、回答できないのですが、次にどのように
されたいかがわからないですが、 TABLE-Bが必要かどうか、
再度検討されてはいかがでしょう。
つまり、次にされたいことは、TABLE-A の情報から
取り出せないでしょうか? テーブルはむやみに増やさないほうが
後々、より簡素に扱えるのいいと思います。
アドバイスになってないかもしれませんが、すいません。

>TABLE-A の DATA を TABLE-B のように
>集約した形に作り替えたいのですが、
>どのようにしたら良いか分かりません。
>方法をご教示ください。
>
>
>TABLE-A
>-------------------------------    
>CODE    RANK    POINT    
>-------------------------------    
>A    1    20        
>A    2    30        
>A    3    40        
>B    1    50        
>B    3    60        
>
>
>TABLE-B
>-------------------------------                    
>    RANK1    RANK2    RANK3    
>CODE    POINT    POINT    POINT    
>-------------------------------    
>A    20    30    40    
>B    50        60

【10917】Re:DATAの集約方法について
お礼  pinetree  - 09/1/8(木) 16:34 -

引用なし
パスワード
   ありがとうございました。
もう少し考えてみます。
ただ、このような事が簡単にできれば、
非常に便利ではないかと思っております。

【10921】Re:DATAの集約方法について
発言  トト  - 09/1/9(金) 8:57 -

引用なし
パスワード
   ▼pinetree さん:
基本はクロス集計クエリを使用すると良いです。
TRANSFORM Sum([TABLE-A].POINT) AS POINTの合計
SELECT [TABLE-A].CODE
FROM [TABLE-A]
GROUP BY [TABLE-A].CODE
PIVOT [TABLE-A].RANK;

場合によっては、1行目は
TRANSFORM First([TABLE-A].POINT) AS POINTの先頭
でも良いでしょう。


少し作成が面倒ですが、
SELECT [TABLE-A].CODE,
Max(IIf([TABLE-A]![RANK]=1,[TABLE-A]![POINT],Null)) AS RANK1_POINT,
Max(IIf([TABLE-A]![RANK]=2,[TABLE-A]![POINT],Null)) AS RANK2_POINT,
Max(IIf([TABLE-A]![RANK]=3,[TABLE-A]![POINT],Null)) AS RANK3_POINT
FROM [TABLE-A]
GROUP BY [TABLE-A].CODE;
このような集計クエリであれば、より希望に近いかもしれません。


参考までに。

【10924】Re:DATAの集約方法について
お礼  pinetree  - 09/1/9(金) 13:15 -

引用なし
パスワード
   ▼トト さん:
>▼pinetree さん:
>基本はクロス集計クエリを使用すると良いです。
>TRANSFORM Sum([TABLE-A].POINT) AS POINTの合計
>SELECT [TABLE-A].CODE
>FROM [TABLE-A]
>GROUP BY [TABLE-A].CODE
>PIVOT [TABLE-A].RANK;
>
>場合によっては、1行目は
>TRANSFORM First([TABLE-A].POINT) AS POINTの先頭
>でも良いでしょう。
>
>
>少し作成が面倒ですが、
>SELECT [TABLE-A].CODE,
>Max(IIf([TABLE-A]![RANK]=1,[TABLE-A]![POINT],Null)) AS RANK1_POINT,
>Max(IIf([TABLE-A]![RANK]=2,[TABLE-A]![POINT],Null)) AS RANK2_POINT,
>Max(IIf([TABLE-A]![RANK]=3,[TABLE-A]![POINT],Null)) AS RANK3_POINT
>FROM [TABLE-A]
>GROUP BY [TABLE-A].CODE;
>このような集計クエリであれば、より希望に近いかもしれません。
>
>
>参考までに。

ご指導ありがとうございました。
ねらい通りの結果を得ることができました。
今後ともよろしくお願いいたします。

617 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078198
(SS)C-BOARD v3.8 is Free