前提・実現したいこと
下記の図のような結果をSQLだけで導き出したいのですが
お力をお借りさせていただきたいです。
使用しているのはSQL SERBERです。
<現在のDB>
【テーブル名:入荷予定】
OrderNo | RowNo | ItemID | YoteiCnt | TorikomiFile
1000001 | 1 | 1 | 5 | A
1000001 | 2 | 2 | 5 | A
1000001 | 3 | 3 | 5 | A
1000001 | 4 | 1 | 5 | B
【テーブル名:入荷状況】
OrderNo | ItemID | NyukaCnt |
1000001 | 1 | 7 |
1000001 | 2 | 5 |
1000001 | 3 | 5 |
<実現したい結果>
OrderNo 1000001で入荷したItemID 1 のNyukaCnt 7 を
OrderNo 1000001 内にあるItemID 1 の2行に対して振り分けを行い、
1行目は5、4行目は2という結果を導く。
※引当順はRowNoの昇順
結合条件:
入荷予定.OrderNo = 入荷状況.OrderNo
入荷予定.ItemID = 入荷状況.ItemID
【算出結果】
OrderNo | RowNo | ItemID | YoteiCnt | TorikomiFile | NyukaCnt | Kabusoku
1000001 | 1 | 1 | 5 | A | 5 | 0
1000001 | 2 | 2 | 5 | A | 5 | 0
1000001 | 3 | 3 | 5 | A | 5 | 0
1000001 | 4 | 1 | 5 | B | 2 | -3
該当のソースコード
SQL
1/*--2つのテーブルの結合までは導き出せるのですが 2振り分けるとなるとどのようにクエリを書けばいいのかわからず、 3アドバイスをいただけますと幸いです。--*/ 4 5SELECT 6 TNY.OrderNo 7 , TNY.ItemID 8 , TNY.YoteiCnt 9 , TNY.TorikomiFile 10 , TNJ.NyukaCnt 11 , (TNJ.NyukaCnt - TNY.YoteiCnt) AS Kabusoku 12 FROM 13 入荷予定 TNY 14 LEFT JOIN 入荷状況 TNJ 15 ON TNY.OrderNo = TNJ.OrderNo 16 AND TNY.ItemID = TNJ.ItemID; 17 18 19 20
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/22 01:22