2016-10-24 14 views
0

SQL Serverに2つのテーブルの在庫と注文があります。将来の日付と短絡の数量を確認する

「インベントリ」は、配置されたすべてのオーダーの現在および将来の在庫を反映します。この場合

インベントリ

Item  Quantity 
Shoes  100 
Coats  200 
Socks  -300 

、同社は、テーブルに基づいて300の靴下短いです。

注文は、私たちが販売するメーカーと商品から購入した商品の両方を反映しています。

Item  Quantity  Ship_ArrivalDate  Buy_Sell 
Shoes  300   10/27/2016   Sell 
Socks  500   10/27/2016   Buy 
Socks  500   10/29/2016   Sell 
Shoes  800   10/30/2016   Buy 

今日が10/24/2016の場合、今日は実際には0の靴があります。 在庫は将来のすべての取引を反映しているため、2011年10月27日に200個の靴下があり、10/29/2016に短い300個の靴下があります。そして、300回の靴売りと800回の靴購入後、私は在庫が100です。しかし、それは私が靴のために10/27/2016で短くなることを意味します。

将来のすべての日付を反映する表を作成し、短くする予定の日をチェックしたいと考えています。

ので、テーブルがのように見える終わるでしょう:

出力

Date   Item  Quantity_Short 
10/27/2016 Shoes  -400 
10/29/2016 Socks  -300 

私はそれぞれの日付を確認するために、実際にどこから始めれば分からないどのように混乱しています。私は孤立して1つの日付をチェックする方法を理解していますが、どのように将来のすべての日付を本質的に「ループ」させ、日付と数量を出力表に保存しますか?

日付をとり、数学が適用を使用する関数を書くかもしれませんか?

どのようなスタートアドバイスをいただければ幸いです。ありがとう!

+0

ような何かを試すことができますか – Serg

+0

SQL Server Management Studio 2008 – user3697498

答えて

1

あなたのMS SQLのバージョンは何ですか?この

select date, item, 
     sum(case when date > getdate() and buy_sell = 'sell' then -Quantity 
       else Quantity 
      End) as SumQuantity 
from YourTable 
group by date, item 
+0

@jarlhもう一度ソリューションをありがとうございます。私はこれをもう一度実装しましたが、出力に表示される唯一の日付はship_arrivalDatesが関連付けられた日付です。ある範囲内のすべての日付を表示する良い方法はありますか?だから、私が10/27から10/30までを含むことを望んでいるとしましょう。 – user3697498

+0

場合によっては、日付が10/27より大きく、終了時間が10/30より小さい日付を使用できます。しかし、完全にあなたの質問を理解していない。私はstartdateとenddateの間に日付を使用する大きなファンではありません。そこには難点があります。 –

+0

返信いただきありがとうございます。質問を明確にするために、私の例はこのアドインには理想的ではありませんが、私の出力表には、短くても10/27,10/28,10/29,10/30の量を返すようにしたいとします。棚卸しかどうか。しかし、私は靴の場合、10/27と10/30の在庫表に変更があります。すべての在庫レベルを10/27、10/28、10/29、10/30に戻すにはどうすればよいですか?それは明確ですか? – user3697498

関連する問題