SUM后列名无效问题
我想获取一个仓单中的每个商品的:预期数量、实际数量、剩余数量,并且剩余数量大于零
使用以下语句,报错:[Microsoft][ODBC SQL Server Driver][SQL Server]列名 'sumQty1' 无效。
SELECT CmdyID, SUM(QtyExpect) AS sumQty1, SUM(QtyActual) AS sumQty2, (sumQty1 - sumQty2) AS sumQty3
FROM OWsT_Order_Item
WHERE OrderID = 'P101201001' AND sumQty3 > 0
GROUP BY CmdyID
改成以下语句才可以,但我又不会判断剩余数量大于零
SELECT CmdyID, SUM(QtyExpect) AS sumQty1, SUM(QtyActual) AS sumQty2, (SUM(QtyExpect) - SUM(QtyActual)) AS sumQty3
FROM OWsT_Order_Item
GROUP BY CmdyID
并且,最重要的是,以上只是简单的示例,实际使用时:预期数量 和 实际数量,也是通过大量SQL语句从不同的表计算出来的,因此就算使用第二种修改后方法,也会SQL语句太长、太乱、效率低下。
请问有没有简洁的方法,存储过程也可以,谢谢!
------解决方案--------------------SQL code
SELECT
CmdyID, SUM(QtyExpect) AS sumQty1, SUM(QtyActual) AS sumQty2,
(sumQty1 - sumQty2) AS sumQty3
FROM OWsT_Order_Item
WHERE OrderID = 'P101201001' AND sumQty3 > 0
GROUP BY CmdyID
--这个报错是因为sumQty1,sumQty2是你在当前层次的别名,嵌套后方可使用。