• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ご教授お願い致します。)

MicrosoftSQL2008でテーブルを結合する方法についての質問

このQ&Aのポイント
  • MicrosoftSQL2008で在庫データと受払データの二つのテーブルをビューで結合する方法について教えてください。
  • 在庫データには年月、受払データには年月日で管理されており、結合すると特定の日付のみ結合されます。この制約を回避する方法を教えてください。
  • 具体的には、在庫データの2010/06/01だと受払データの伝票No.1から3までと結合され、2010/07/01だと伝票No.4と結合されます。

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

  • ベストアンサー
  • riveron77
  • ベストアンサー率48% (180/370)
回答No.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)
回答No.1

ON YEAR(年月)=YEAR(日付) AND MONTH(年月)=MONTH(日付) とするくらいですかね。