【发布时间】:2019-09-23 20:14:06
【问题描述】:
我正在查看大量记录,并想计算一个 ID 每月更新一次以上的次数。
SELECT COUNT(*) AS Frequency, MONTH(Date) AS MM, YEAR(Date) AS YYYY, Id
FROM data
WHERE -- [some filtering]
AND Date <= -- end date
AND Date >= -- start date
GROUP BY Date, Id
HAVING COUNT(*) > 1
ORDER BY MM DESC
现在发生的情况是,我只找到每天更新一次以上的 ID 数量。我想要做的是按月对 ID 进行分组。
我曾尝试在我的 GROUP BY 中使用列 MM,但随后我收到错误代码,指出这些列选择无效。
我尝试使用以下 GROUP BY:
GROUP BY DATEPART(MONTH, Date), Id
我得到的只是连续的 8120 错误,我不知道应该如何将它们组合在一起。任何帮助将不胜感激。
【问题讨论】:
-
稍微绕道...但是在继续到处喷 NOLOCK 之前,您可能需要阅读一些内容。 blogs.sentryone.com/aaronbertrand/bad-habits-nolock-everywhere
-
另外,当收到错误消息时,提供错误消息而不是只提供数字会很有帮助,因为大多数人并没有记住所有的数字。
-
请注意!
标签: sql-server group-by datepart