• ベストアンサー

Access2000 複数レコードを1つにするには・・・?

お世話になります。 テーブルAに顧客の予約状況があります。 例えば、顧客ID「001」の人が11月10日と11月12日と11月15日なんて予約があって現在はそれぞれが1レコードとしてDBに格納され3レコード持っています。しかし紙に出力する際には1顧客1行にしたいので、どうにかこの3レコードを1レコードとする方法はないでしょうか? DBレイアウトとしては顧客ID、予約1、予約2、予約3・・・のようにです。最大5つぐらいを想定しています。 VBAはなんとなくわかりますが、DAOなどはほとんどわかりません。 こんな説明でわかってもらえましたでしょうか? 是非、ご教授ください。

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

  • ベストアンサー
  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.2

■クエリ「Q予約日1」 SELECT 予約.顧客ID, Min(予約.予約日) AS 予約日1 FROM 予約 GROUP BY 予約.顧客ID ORDER BY 予約.顧客ID, Min(予約.予約日); ■クエリ「Q予約日2」 SELECT 予約.顧客ID, Min(予約.予約日) AS 予約日2 FROM 予約 LEFT JOIN Q予約日1 ON 予約.顧客ID = Q予約日1.顧客ID WHERE (((Q予約日1.予約日1)<>[予約].[予約日])) GROUP BY 予約.顧客ID ORDER BY 予約.顧客ID, Min(予約.予約日); ■クエリ「Q予約日3」 SELECT 予約.顧客ID, Min(予約.予約日) AS 予約日3 FROM (予約 LEFT JOIN Q予約日1 ON 予約.顧客ID = Q予約日1.顧客ID) LEFT JOIN Q予約日2 ON 予約.顧客ID = Q予約日2.顧客ID WHERE (((Q予約日1.予約日1)<>[予約].[予約日]) AND ((Q予約日2.予約日2)<>[予約].[予約日])) GROUP BY 予約.顧客ID ORDER BY 予約.顧客ID, Min(予約.予約日); ■クエリ「Q予約日4」 SELECT 予約.顧客ID, Min(予約.予約日) AS 予約日4 FROM ((予約 LEFT JOIN Q予約日1 ON 予約.顧客ID = Q予約日1.顧客ID) LEFT JOIN Q予約日2 ON 予約.顧客ID = Q予約日2.顧客ID) LEFT JOIN Q予約日3 ON 予約.顧客ID = Q予約日3.顧客ID WHERE (((Q予約日1.予約日1)<>[予約].[予約日]) AND ((Q予約日2.予約日2)<>[予約].[予約日]) AND ((Q予約日3.予約日3)<>[予約].[予約日])) GROUP BY 予約.顧客ID ORDER BY 予約.顧客ID, Min(予約.予約日); ■クエリ「Q予約日5」 SELECT 予約.顧客ID, Min(予約.予約日) AS 予約日5 FROM (((予約 LEFT JOIN Q予約日1 ON 予約.顧客ID = Q予約日1.顧客ID) LEFT JOIN Q予約日2 ON 予約.顧客ID = Q予約日2.顧客ID) LEFT JOIN Q予約日3 ON 予約.顧客ID = Q予約日3.顧客ID) LEFT JOIN Q予約日4 ON 予約.顧客ID = Q予約日4.顧客ID WHERE (((Q予約日1.予約日1)<>[予約].[予約日]) AND ((Q予約日2.予約日2)<>[予約].[予約日]) AND ((Q予約日3.予約日3)<>[予約].[予約日]) AND ((Q予約日4.予約日4)<>[予約].[予約日])) GROUP BY 予約.顧客ID ORDER BY 予約.顧客ID, Min(予約.予約日); ■クエリ「Q予約日」 SELECT Q予約日1.顧客ID, Q予約日1.予約日1, Q予約日2.予約日2, Q予約日3.予約日3, Q予約日4.予約日4, Q予約日5.予約日5 FROM (((Q予約日1 LEFT JOIN Q予約日2 ON Q予約日1.顧客ID = Q予約日2.顧客ID) LEFT JOIN Q予約日3 ON Q予約日1.顧客ID = Q予約日3.顧客ID) LEFT JOIN Q予約日4 ON Q予約日1.顧客ID = Q予約日4.顧客ID) LEFT JOIN Q予約日5 ON Q予約日1.顧客ID = Q予約日5.顧客ID ORDER BY Q予約日1.顧客ID; 上記6つのクエリを作成して、クエリ「Q予約日」を実行すると、ご希望の結果になると思います。 このクエリをレポートのレコードソースにすればいいでしょう。 頑張ってくださいヽ(^。^)ノ

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>テーブルAに顧客の予約状況があります。 テーブルAはどんなレイアウトなのでしょうか? 主キーは? >VBAはなんとなくわかりますが、DAOなどはほとんどわかりません。 クエリやSQLは解りますか? VBAやDAO、ADOを極力使わないのでしたらクエリで何とかするしかないんですけど。 >しかし紙に出力する際には1顧客1行にしたいので、 紙とはどのような方法を想定していますか? Accessのレポートのことですか? >DBレイアウトとしては顧客ID、予約1、予約2、予約3・・・のようにです。最大5つぐらいを想定しています。 予約1~5の出力順は?

関連するQ&A