Katuragiの日記: 本日の命題:MS-Access 7
日記 by
Katuragi
次のような1対多のDBを横一に並び替えたいと思っている。
元になるDB
IID | itemName
---------------
No1 | A
No1 | B
No2 | B
No2 | C
No3 | A
No3 | C
No4 | C
結果
ID | itemA | itemB | itemC
------------------------
No1 | ○ | ○ |
No2 | | ○ | ○
No3 | ○ | | ○
No4 | | | ○
現在は、クエリで元になるDBの逆パターンを作成して、該当したIDに○をつけるということをやっています。
他になにか良い方法はありますでしょうか?
それとも現在の方法がベストなのかなぁ。
# 等幅がうまくでない...伝わるかなぁ
Accessかあ… (スコア:2, 参考になる)
select IID as ID,iif(sum(A)>0,'○','') as itemA,iif(sum(B)>0,'○','') as itemB,iif(sum(C)>0,'○','') as itemC,iif(sum(D)>0,'○','') as itemD from
(select IID,iif(itemName='A',1,0) as A ,iif(itemName='B',1,0) as B,iif(itemName='C',1,0) as C,iif(itemName='D',1,0) as D from 元DB) group by IID
とかどうでしょ?
#環境あったら検証したんだが。
Re:Accessかあ… (スコア:1)
うん、イメージできました。
ありがとうございます。
-- ラテール部参加者募集中
検証しました (スコア:1)
ただ、itemDが余計でしたが。(w
ecodeタグのテスト (スコア:1)
Re:ecodeタグのテスト (スコア:1)
Excelでエクスポートして共有のレポートに使っているわけですわ。
-- ラテール部参加者募集中
Re:ecodeタグのテスト (スコア:1)
2.クエリの新規作成ででクロス集計を選ぶ
3.行見出しにiid、列見出しにitemNameを指定します(次ページへ)
4.集計値は表示しない、集計方法はカウント(wk)
○じゃなくて0ですけど、どうでしょうか。
TRANSFORM Count([wk])
SELECT [iid]
FROM テーブル1
GROUP BY [iid]
PIVOT [itemName];
Re:ecodeタグのテスト (スコア:1)
集計した結果の0や1を○にするのは、eukaraさんも書かれていますが、
iifで変更すればいけそうです。
いやぁいっぺんに目の前の壁が取り払われた感じです。
ありがとうございました!
-- ラテール部参加者募集中