Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL使用SUM函数联合和分组两个表_Sql Server_Tsql - Fatal编程技术网

Sql server SQL使用SUM函数联合和分组两个表

Sql server SQL使用SUM函数联合和分组两个表,sql-server,tsql,Sql Server,Tsql,所以我有两张桌子: Products Product ID | Quantity OrdersLines Product ID | Amount (multiple lines with same ID) 我想把两张桌子连接起来。结果应该是-产品ID(分组依据)、数量和OrdersLines表中所有金额的总和 到目前为止,我已经做到了: SELECT P.ProductID, P.Quantity, SUM(OL.Amount) FROM atbl_Sales_Products AS P

所以我有两张桌子:

Products
Product ID | Quantity

OrdersLines 
Product ID | Amount (multiple lines with same ID)
我想把两张桌子连接起来。结果应该是-产品ID(分组依据)、数量和OrdersLines表中所有金额的总和

到目前为止,我已经做到了:

SELECT P.ProductID, P.Quantity, SUM(OL.Amount)
FROM atbl_Sales_Products AS P
LEFT JOIN atbl_Sales_OrdersLines AS OL ON OL.ProductID = P.ProductID 
GROUP BY P.ProductID
这会产生错误:

列“atbl\u Sales\u Products.Quantity”在选择列表中无效 因为它既不包含在聚合函数中,也不包含在 按子句分组


谢谢你的帮助

根据您的需要,有两种方法可以编写此文档

正在将数量添加到聚合中

SELECT 
   P.ProductID, 
   SUM(P.Quantity), 
   SUM(OL.Amount)
FROM atbl_Sales_Products AS P
LEFT JOIN atbl_Sales_OrdersLines AS OL ON OL.ProductID = P.ProductID 
GROUP BY P.ProductID
将数量添加到分组中

SELECT 
   P.ProductID, 
   P.Quantity, 
   SUM(OL.Amount)
FROM atbl_Sales_Products AS P
LEFT JOIN atbl_Sales_OrdersLines AS OL ON OL.ProductID = P.ProductID 
GROUP BY P.ProductID, P.Quantity
--based on comment
HAVING SUM(OL.Amount) > P.Quantity

难道你不想
SUM(P.Quantity)
吗?我不会使用
左连接
。改用
内部联接
。第二个联接适合我。还有一件事,有没有办法只选择数量>总和(OL.Amount)的这些行?当然,但这种逻辑对我来说没有多大意义。您想知道什么时候产品的数量超过了它们的总成本?products表就像一个仓库(数量=产品的可用数量)。订单行(金额=当前订购/保留金额)。我只想选择仍有一定数量可用的行。哦,好吧,那就更有意义了。我将发布一个编辑从atbl_Sales_Products中选择P.ProductID、P.Quantity、SUM(OL.Amount)作为P LEFT加入atbl_Sales_Orders作为OL.ProductID=P.ProductID组按P.ProductID,P.Quantity具有P.Quantity>SUM(OL.Amount)