SQL动态库存移动报告
我已设法从数据库中获取数据,如下所示:SQL动态库存移动报告,sql,sql-server-2008-r2,sql-view,Sql,Sql Server 2008 R2,Sql View,我已设法从数据库中获取数据,如下所示: STOCKNAME | STORENAME | WEEKNUM | SOH | SALES Apples | Store 1 | 10 | 1 | 3 Apples | Store 1 | 9 | 4 | 1 Apples | Store 1 | 8 | 5 | Pears | Store 1 | 10 | 15 |
STOCKNAME | STORENAME | WEEKNUM | SOH | SALES
Apples | Store 1 | 10 | 1 | 3
Apples | Store 1 | 9 | 4 | 1
Apples | Store 1 | 8 | 5 |
Pears | Store 1 | 10 | 15 | 0
Pears | Store 1 | 9 | 15 | 0
Pears | Store 1 | 8 | 15 |
Mangoes | Store 1 | 10 | 33 | 15 <-- They could have received more stock between week week
Mangoes | Store 1 | 9 | 25 | 8
Mangoes | Store 1 | 8 | 32 |
SELECT STOCKNAME, STORENAME, SOH, 0 AS QTY, 'SOH' AS TRANSACTIONTYPE
FROM TABLE1
GROUP BY STOCKNAME, STORENAME,'SOH' AS TRANSACTIONTYPE
HAVING WEEKNUMBER = 10 <-- Not sure how to dynamic this. Weeknumber will change
CASE WHEN (QTY = 0 and SOH > 0) THEN 'Attention Required Here' ELSE 'Everything is Cool' END
您能否添加预期结果(根据您的样本数据)?此外,还使用了标记dbms产品-答案可能取决于它。请特别查看窗口函数和LAG()。使用windows函数,您应该能够在一条语句中进行计算。
SELECT STOCKNAME, STORENAME, SOH, 0 AS QTY, 'SOH' AS TRANSACTIONTYPE
FROM TABLE1
GROUP BY STOCKNAME, STORENAME,'SOH' AS TRANSACTIONTYPE
HAVING WEEKNUMBER = 10 <-- Not sure how to dynamic this. Weeknumber will change
SELECT * FROM QUERY1
UNION
SELECT * FROM QUERY2
CASE WHEN (QTY = 0 and SOH > 0) THEN 'Attention Required Here' ELSE 'Everything is Cool' END