【发布时间】:2017-09-20 12:31:12
【问题描述】:
我计算了一个每日数字,它将每个名称输入的所有数字汇总在一起,因此我在每个名称下都有重复的行。我希望结果每个用户只显示一个结果,所以我认为最好使用 distinct。但是,我还需要按降序显示结果。这可以在同一个语句中做到吗?
SELECT DISTINCT
D.DATE,
COALESCE( M.[Team ADJ],D.[Team ADJ], M.[Name]) AS 'Sales Person',
COALESCE( D.[Team], M.[Team]) AS 'Sales Team',
isnull(D.[Daily Figure],0) AS [Daily Figure],
FROM
[Daily] D
FULL OUTER JOIN
[Month] M ON D.[Name] = F.[Name]
ORDER BY [Daily Figure] DESC
当前结果
Date Sales Person Sales Team Daily Figure Month
2017-09-19 FRED SAM 20 285
2017-09-19 FRED SAM 20 285
2017-09-19 FRED SAM 20 285
2017-09-19 TOM BEN 140 118
2017-09-19 TOM BEN 140 118
错误:'如果指定了 SELECT DISTINCT,则 ORDER BY 项目必须出现在选择列表中。即使我已将其包含在选择列表中
【问题讨论】:
-
为什么在您的
SELECT中没有Date列?否则,您的查询应该可以正常工作。 -
如果您仅按名称加入,您将获得例如 3 条
Month记录和 90 条Daily记录,结果仅包含该名称的 270 行。这是故意的吗?请考虑您希望在结果中看到什么。每个名称和月份一个记录?每个名字和一天一个记录?每个名字一个记录?Date、Daily Figure和Month应该包含哪些列? -
“我想要
DISTINCT但是...”通常是一个线索,您应该查看 a) 首先为什么会得到重复的结果和/或 b) 您是否实际上需要GROUP BY并聚合。目前,我不清楚这更像是 (a) 还是 (b) 情况。 -
当执行 SELECT DISTINCT 时,您只能 ORDER BY 选择列表项。
-
顺便说一句,单引号是用于sting文字的。不要将它们用作别名。
标签: sql sql-server sql-order-by distinct