我在Microsoft SQL Server 2016上使用TSQL
我想创建一个SQL,让我的照片计数按员工,分组按年和月(过去36个月)
所以这是我首先尝试的:
select
count(emp) AS NumberOfPics,
emp AS employee,
LEFT(picdatum,4) AS YearPic,
(Select Top 36 left(dbo.f376.picdatum,6))
FROM Storage
GROUP BY emp, LEFT(picdatum,4), LEFT(picdatum,6)它工作得很好Result of my SQL
但是约会的结果并不是那么好。
所以我做了第二个。
select top 10
CONVERT (datetime,convert(char(8),picdatum)),
DATEPART(YYYY,CONVERT (datetime,convert(char(8),picdatum))) AS YearPic,
DATEPART(MM, CONVERT (datetime,convert(char(8),picdatum))) AS MonthPic,
DATEPART(WW, CONVERT (datetime,convert(char(8),picdatum))) AS WeekPic
from storageDatepard和结果看起来好多了。
但问题来了,我需要你的帮助:
如果我尝试将它与:
select count(emp) AS NumberOfPics,
emp AS Employee,
CONVERT (datetime,convert(char(8),picdatum)),
DATEPART(YYYY,CONVERT (datetime,convert(char(8),picdatum))) AS YearPic,
DATEPART(MM, CONVERT (datetime,convert(char(8),picdatum))) AS MonthPic,
DATEPART(WW, CONVERT (datetime,convert(char(8),picdatum))) AS WeekPic
from storage
GROUP BY emp, YearPic, MonthPic它可能不起作用,即使我再次使用左边的部分,它也是这样的:
storage.picdatum列在选择列表中无效,因为它既未包含在聚合函数中,也未包含在GROUP BY子句中。
那么,如何使用Datepart函数进行分组,以及如何解决此特定sql上的聚合问题?
发布于 2020-07-02 14:23:57
别名在group by子句中不起作用-您需要将其替换为actual
select count(emp) AS NumberOfPics,
emp AS Employee,
DATEPART(YYYY,CONVERT (datetime,convert(char(8),picdatum))) AS YearPic,
DATEPART(MM, CONVERT (datetime,convert(char(8),picdatum))) AS MonthPic,
DATEPART(WW, CONVERT (datetime,convert(char(8),picdatum))) AS WeekPic
from storage
GROUP BY emp, DATEPART(YYYY,CONVERT (datetime,convert(char(8),picdatum))), DATEPART(MM, CONVERT (datetime,convert(char(8),picdatum))),DATEPART(WW, CONVERT
(datetime,convert(char(8),picdatum)))https://stackoverflow.com/questions/62690153
复制相似问题