[英]SQL Count of results for each month in the Year
我有一个SQL查询,轻松搞定单月。
但我正在尝试编写一个存储过程来获取所有月份。
DECLARE @datemin date = '2019-10-01';
DECLARE @maxdate date = '2019-12-31'
WHILE @datemin <= @maxdate
BEGIN
SELECT DISTINCT
A.sMonth, A.sYear, COUNT(*)
FROM
ClientsTable A
CROSS APPLY
[dbo].[udfdob] (A.[DateOfBirth], @maxdate) B
WHERE
sDate BETWEEN @datemin AND @maxdate
GROUP BY
A.sMonth, A.sYear
SET @datemin = DATEADD(MONTH, 1, @datemin)
END
--EXEC sp_clientWaiting
但 output 出现多次:
我如何 go 即将获得一年中每个月的结果一次?
目前我必须手动输入每个月的日期。
提前致谢。
删除 WHILE
DECLARE @datemin date = '2019-10-01';
DECLARE @maxdate date = '2019-12-31'
SELECT
A.sMonth, A.sYear, COUNT(*)
FROM
ClientsTable A
CROSS APPLY
[dbo].[udfdob] (A.[DateOfBirth], @maxdate) B
WHERE
sDate BETWEEN @datemin AND @maxdate
GROUP BY
A.sMonth, A.sYear
从你所说的看起来循环第一次运行时,这就是你想要的。 循环的所有其他迭代只是第一个结果集,其中又删除了另一行
如果要分组,则不需要 DISTINCT
你用的是udfdob function的output吗? 它似乎没有出现在查询中,所以它的唯一效果是它返回多行的结果集,但感觉不像......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.