- ベストアンサー
MicrosoftSQL2008でテーブルを結合する方法についての質問
- MicrosoftSQL2008で在庫データと受払データの二つのテーブルをビューで結合する方法について教えてください。
- 在庫データには年月、受払データには年月日で管理されており、結合すると特定の日付のみ結合されます。この制約を回避する方法を教えてください。
- 具体的には、在庫データの2010/06/01だと受払データの伝票No.1から3までと結合され、2010/07/01だと伝票No.4と結合されます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「在庫データの(例えば)入庫数が、受払データのどれにあたるのか」といったことを、結合によって一覧表示したい、ということでしょうか? もしそうなら、ちょっと無理な気がしますが… 在庫と受払を紐付けるものが、日付と品番のみ。 でも在庫の日付って、受払の日付とは違うものですよね。 在庫側6/1のデータは、受払の6/2~6/4のデータ… 例えば6月中に入出庫したデータは、在庫の6/1のデータに加算される、とか省略されている仕様があるのでは? もしそうなら、 在庫.年月の年と受払.日付の年 と 在庫.年月の月と受払.日付の月 と 在庫.品番と受払.品番 を結合してあげれば、なんとなく出来そうな気もします。 当方SQLServerがないため、Accessでのクエリになりますが、ご参考まで。 SELECT Q_在庫.年月 AS 在庫_年月 , Q_在庫.品番 AS 在庫_品番 , Q_在庫.入庫数 AS 在庫_入庫数 , Q_在庫.出庫数 AS 在庫_出庫数 , Q_受払.伝票No AS 受払_伝票No , Q_受払.日付 AS 受払_日付 , Q_受払.入出庫区分 AS 受払_入出庫区分 , Q_受払.数量 AS 受払_数量 FROM (SELECT Year([年月]) AS 年, Month([年月]) AS 月, 在庫データ.年月, 在庫データ.品番, 在庫データ.入庫数, 在庫データ.出庫数 FROM 在庫データ) Q_在庫 LEFT JOIN (SELECT 受払データ.伝票No, Year([日付]) AS 年, Month([日付]) AS 月, 受払データ.日付, 受払データ.品番, 受払データ.入出庫区分, 受払データ.数量 FROM 受払データ)Q_受払 ON (Q_在庫.品番 = Q_受払.品番) AND (Q_在庫.月 = Q_受払.月) AND (Q_在庫.年 = Q_受払.年) ORDER BY Q_在庫.年月 , Q_受払.伝票No; 結果 在庫_年月 | 在庫_品番 | 在庫_入庫数 | 在庫_出庫数 | 受払_伝票No | 受払_日付 | 受払_入出庫区分 | 受払_数量 -----------+-----------+-------------+-------------+-------------+------------+-----------------+----------- 2010/06/01 | A | 3 | 1 | 1 | 2010/06/02 | 入庫 | 1 2010/06/01 | A | 3 | 1 | 2 | 2010/06/03 | 入庫 | 2 2010/06/01 | A | 3 | 1 | 3 | 2010/06/04 | 出庫 | 1 2010/07/01 | A | 0 | 1 | 4 | 2010/07/02 | 出庫 | 1
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
ON YEAR(年月)=YEAR(日付) AND MONTH(年月)=MONTH(日付) とするくらいですかね。