• ベストアンサー

行方向のデータを横に並べる

例えば以下のようなデータがあったとします 品目コード、区分 001 A 001 C 001 D 002 E 品目コードでグルーピングし区分を横に並べたデータをクエリで作成したいのです 品目コード、区分 001 A,C,D 002 E このようなデータを出力するにはどういったクエリ(SQL)を記述すればいいでしょうか? アドバイス下さい

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

Accessで処理をしたいということで。 関数を作成してクエリで使用します。 標準モジュールに以下を貼り付けます。 DAOをつかっているのでコード表の ツール→参照設定で Microsoft DAO xx Object Library にチェックを入れておいてください。 xxは3.6のような数字です。 テーブル名は実際にあわせて変更してください。 Function funcStr(ByVal mystr As String) As String   Dim db As DAO.Database   Dim rs As DAO.Recordset   Dim strBuf As String   Set db = CurrentDb   Set rs = db.OpenRecordset("テーブル1")   If rs.RecordCount > 0 Then     rs.MoveFirst     Do Until rs.EOF       If mystr = rs!品目コード Then         strBuf = strBuf & rs!区分 & ","       End If       rs.MoveNext     Loop     If Right(strBuf, 1) = "," Then       strBuf = Left(strBuf, Len(strBuf) - 1)     End If     funcStr = strBuf   End If   rs.Close: Set rs = Nothing   db.Close: Set db = Nothing End Function 次に以下のようなクエリを作成してみてください。 テーブル名は実際にあわせて変更してください。 SELECT テーブル1.品目コード, funcStr([品目コード]) AS 区分 FROM テーブル1 GROUP BY テーブル1.品目コード;

その他の回答 (2)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

Access をやる者にとって、こちらが標準かと思われます。 DJoin 関数 - リスト文字列を取得する方法 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaDJoin.html

回答No.1

select item_cd, group_concat(tag) from item_tab group by item_cd http://dev.mysql.com/doc/refman/5.1/ja/group-by-functions.html MySQL をお使いなら上記のようなかんじになると思います。 ただ、 GROUP_CONCAT 関数に相当する機能は、各データベース製品、バージョンごとにやり方が異なります。 GROUP_CONCAT 関数をサポートしていない環境もあるので注意してください。

nobi12
質問者

お礼

ありがとうございます accessでやりたかったというのを書き忘れてしまいました accessにGROUP_CONCAT 関数に相当するものがあるか探してみたのですが なさそうですね・・・

関連するQ&A