dポイントプレゼントキャンペーン実施中!

ご教授お願い致します。

MicrosoftSQL2008で
テーブルに在庫データと受払データの2種類があります。
在庫データは受払データを1行にまとめた情報で
年月で管理しています。
また、受払データはその詳細で年月日で管理しています。

質問は、この二つのテーブルをビューで1つに結合したいのですが
結合に在庫データの年月と受払データの年月日だと特定の日付のみしか
結合されません。
よって、方法を教えて頂ければ幸いです。
尚、例を下に記述します。

■在庫データ
年月    品番 入庫数 出庫数
2010/06/01 A   3    1
2010/07/01 A 0 1

■受払データ
伝票No. 日付  品番 入出庫区分 数量
1 2010/06/02 A 入庫    1
2 2010/06/03 A 入庫    2
3 2010/06/04 A 出庫    1
4 2010/07/02 A 出庫    1  

 結合は在庫データの2010/06/01だと受払データの
 伝票No.が1から3まで
 2010/07/01だと伝票No.4です。

A 回答 (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
    • good
    • 0

ON YEAR(年月)=YEAR(日付) AND MONTH(年月)=MONTH(日付)


とするくらいですかね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!