当前位置: 代码迷 >> Sql Server >> SUM后列名无效有关问题
  详细解决方案

SUM后列名无效有关问题

热度:57   发布时间:2016-04-27 13:32:41.0
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 sumQty3FROM OWsT_Order_ItemWHERE OrderID = 'P101201001' AND sumQty3 > 0GROUP BY CmdyID--这个报错是因为sumQty1,sumQty2是你在当前层次的别名,嵌套后方可使用。
  相关解决方案