SQL 服务器分组依据与乘法

SQL Server Group By with Multiplication

我有这个 SQL Server 2005 查询

SELECT OI.BILL_NO,OI.ITEM_NAME,ODS.QUANTITY
FROM ORDER_ITEMS OI
INNER JOIN ORDER_ASSIGNMENTS OAS ON OI.BILL_NO=OAS.BILL_NO
INNER JOIN ORDERS ODS ON OI.BILL_NO = ODS.BILL_NO
INNER JOIN ORDERS OD ON OD.BILL_NO = OI.BILL_NO
WHERE OAS.ASSIGNMENT_TYPE= 'TO_STICHING' AND OAS.EMPLOYEE_NAME = 'AMIT'

我得到这个结果:

现在我的要求是获取每个不同的总数量 ITEM_NAME,示例:

CHURIDER           5    
CHURI PA           4
LACHA              1  
ASTRA              1
ASTRA LACHA DOUBLE 1

像这样,所有不同的ITEM_NAME和它们的总数量

这看起来像是 group bysum():

的简单聚合查询
SELECT OI.ITEM_NAME,sum(ODS.QUANTITY) as Quantity
FROM ORDER_ITEMS OI
INNER JOIN ORDER_ASSIGNMENTS OAS ON OI.BILL_NO=OAS.BILL_NO
INNER JOIN ORDERS ODS ON OI.BILL_NO = ODS.BILL_NO
INNER JOIN ORDERS OD ON OD.BILL_NO = OI.BILL_NO
WHERE OAS.ASSIGNMENT_TYPE= 'TO_STICHING' AND OAS.EMPLOYEE_NAME = 'AMIT'
group by OI.ITEM_NAME

您可以获得列的总和,然后按名称对其进行分组

SELECT OI.BILL_NO,OI.ITEM_NAME,SUM(ODS.QUANTITY)
FROM ORDER_ITEMS OI
INNER JOIN ORDER_ASSIGNMENTS OAS ON OI.BILL_NO=OAS.BILL_NO
INNER JOIN ORDERS ODS ON OI.BILL_NO = ODS.BILL_NO
INNER JOIN ORDERS OD ON OD.BILL_NO = OI.BILL_NO
WHERE OAS.ASSIGNMENT_TYPE= 'TO_STICHING' AND OAS.EMPLOYEE_NAME = 'AMIT' 
GROUP BY OI.BILL_NO,OI.ITEM_NAME

您需要使用聚合函数SUM()

SELECT OI.BILL_NO,OI.ITEM_NAME, SUM(ODS.QUANTITY) AS Qty

AS 用于在显示结果时添加列名,因为当您使用聚合函数时列名显示为 (no column name).

最后一件事,您需要将您选择的其他列添加到 GROUP BY 子句,因为您要获取每个数量的总和,因此您需要对其他列进行分组。 read more and this.

WHERE 子句后添加

GROUP BY OI.BILL_NO,OI.ITEM_NAME