パスワードを忘れた? アカウント作成
504468 journal

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, 参考になる)

    by eukare (2230) on 2007年01月24日 23時27分 (#1097828) 日記
    AccessのSQL文法って良く覚えてないなあ…

    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

    とかどうでしょ?
    #環境あったら検証したんだが。
  • とりあえず表現を直してみる。
    元になる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|       |       |   ○
    うーん、横に並べなおす理由がなんとも。
    • それはね、結果はAccessの中で使うというよりは、
      Excelでエクスポートして共有のレポートに使っているわけですわ。
      --
      -- ラテール部参加者募集中
      親コメント
      • by r5 (24383) on 2007年01月24日 23時22分 (#1097825) 日記
        1.もとのテーブルにwk列を追加します(中は空)
        2.クエリの新規作成ででクロス集計を選ぶ
        3.行見出しにiid、列見出しにitemNameを指定します(次ページへ)
        4.集計値は表示しない、集計方法はカウント(wk)

        ○じゃなくて0ですけど、どうでしょうか。

        TRANSFORM Count([wk])
        SELECT [iid]
        FROM テーブル1
        GROUP BY [iid]
        PIVOT [itemName];

        親コメント
        • 落としどころは「集計クエリを他のクエリから参照できることに気づかなかった」ことのようです。

          集計した結果の0や1を○にするのは、eukaraさんも書かれていますが、
          iifで変更すればいけそうです。

          いやぁいっぺんに目の前の壁が取り払われた感じです。

          ありがとうございました!
          --
          -- ラテール部参加者募集中
          親コメント
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...