SQL Group By函数与SUM结合

时间:2019-01-08 09:01:55

标签: sql tsql group-by

我遇到错误

  

选择列表中的“ Nordlux UK $ Item.Description”列无效   因为它既不包含在聚合函数中,也不包含在   GROUP BY子句。

在尝试运行SQL语句时。

如果我删除了SUM函数,并且按它进行分组,但是我希望将所有结果按我的项目号分组。 谁能在我的代码中看到我做错了什么?

SELECT
    [Nordlux UK$Item].No_,
    [Nordlux UK$Item].[Description],
    SUM([Nordlux UK$Item Ledger Entry].[Quantity]) AS Int
FROM [Nordlux UK$Item]
JOIN [Nordlux UK$Sales Price]
    ON [Nordlux UK$Item].[No_] = [Nordlux UK$Sales Price].[Item No_]
JOIN [Nordlux UK$Item Ledger Entry]
    ON [Nordlux UK$Item].[No_] = [Nordlux UK$Item Ledger Entry].[Item No_]
WHERE [Nordlux UK$Sales Price].[Sales Code] = 'DUN02'
GROUP BY [Nordlux UK$Item].No_

3 个答案:

答案 0 :(得分:3)

您需要在group by子句中添加[Nordlux UK $ Item]。[Description]-因为选择列表的每一列(聚合功能除外)都应该按照by子句

SELECT
    [Nordlux UK$Item].No_,
    [Nordlux UK$Item].[Description],
    SUM([Nordlux UK$Item Ledger Entry].[Quantity]) AS Int
FROM [Nordlux UK$Item]
JOIN [Nordlux UK$Sales Price]
    ON [Nordlux UK$Item].[No_] = [Nordlux UK$Sales Price].[Item No_]
JOIN [Nordlux UK$Item Ledger Entry]
    ON [Nordlux UK$Item].[No_] = [Nordlux UK$Item Ledger Entry].[Item No_]
WHERE [Nordlux UK$Sales Price].[Sales Code] = 'DUN02'
GROUP BY [Nordlux UK$Item].No_, [Nordlux UK$Item].[Description]

答案 1 :(得分:2)

在select语句中与其他列一起使用聚合函数时,通常使用group by并在group by中添加select语句中除聚合函数以外的所有字段。

在您的情况下,您应使用: GROUP BY [Nordlux UK $ Item]。否,     [Nordlux UK $ Item]。[描述],

如果在select语句中仅使用聚合函数,则无需添加group by子句。

答案 2 :(得分:2)

在使用聚合函数时,我总是按所有聚合列(即未使用诸如SUM,MAX,MIN,COUNT的聚合函数的列)进行分组。

SQL并不是一门年轻的语言,也许有一个原因使您想跳过一些汇总列,但我从未遇到过这种情况。