我想连接三个表并计算表 A 的总和(数量)。
我尝试了一些东西,得到了想要的输出。但我仍然对聚合函数和 Group By 子句感到困惑。
在通过连接两个或多个表来计算总和值时,我们需要在 Group By 子句中提及哪些列以及为什么需要给出这些列?
例如:这是我的表和所需的查询。
TableA: ItemID, JobOrderID, CustomerID, DivisionID, Quantity
TableB: ItemID, ItemName, SpecificationID
TableC: SpecificationID, SpecificationName
TableD: DivisionID, DivisionName
TableE: JobOrderID, JobOrderNo.
TableF: CustomerID, CustomerName
我想获得基于的总和(数量)ItemID
, CustomerID
, JobOrderID
and DivisionID
.
我编写了以下查询并且运行良好。但是,如果我删除 Group By 子句中的任何列,它不会给出所需的结果。为什么? Group By 子句在这里做什么?使用聚合函数时如何指定Group By子句?这是我的查询。
SELECT
B.ItemName + ' - ' + C.SpecificationName AS 'ItemName',
SUM(A.Quantity) AS 'Quantity',
A.ItemID,
D.DivisionName,
F.CustomerName,
E.JobOrderNo,
A.DivisionID,
A.JobOrderID,
A.CustomerID
FROM
TableA A
INNER JOIN TableB B ON B.ItemID = A.ItemID
INNER JOIN TableC C ON C.SpecificationID = B.SpecificationID
INNER JOIN TableD D ON D.DivisionID = A.DivisionID
LEFT JOIN TableE E ON E.JobOrderID = A.JobOrderID
LEFT JOIN TableF F ON F.CustomerID = A.CustomerID
WHERE
A.ItemID = @ItemID
GROUP BY
A.ItemID,
A.JobOrderID,
A.DivisionID,
A.CustomerID,
D.DivisionName,
F.CustomerName,
E.JobOrderNo,
B.ItemName,
C.SpecificationName
任何人请以此为例对 Group By 子句提出建议。