我有以下查询:
SELECT DATEPART(yyyy, ap.Date) AS 'Year', COUNT(p.Name2) AS 'Times entered', p.Name2 AS 'Name'
FROM Person p JOIN Price ap ON ap.PersonId = p.ID
GROUP BY p.Name2, DATEPART(yyyy, ap.Date)
ORDER BY DATEPART(yyyy, ap.Date) DESC , p.Name2 ASC
结果,我有以下数据:
2018 50 Bob
2018 40 Fred
2017 10 Bob
2017 5 Fred
我真正想要的不是按年份分组,而是按2017年7月至2018年6月的时间分组。
我想按2017年7月至2018年6月的时间分组。
如何在SQL中按函数将时间范围设置为一组?
答案 0 :(得分:2)
类似的事情应该起作用:
SELECT g.my AS 'Month-Year',
COUNT(p.Name2) AS 'Times entered',
p.Name2 AS 'Name'
FROM Person p
JOIN Price ap ON ap.PersonId = p.ID
CROSS APPLY
(
SELECT CONCAT(DATEPART(mm, ap.Date), '-', DATEPART(yyyy, ap.Date)) AS my
) AS g
WHERE ap.Date BETWEEN '2017-07-01' AND '2018-06-30'
GROUP BY p.Name2, g.my
ORDER BY g.my DESC , p.Name2 ASC