繁体   English   中英

SQL 一年中每个月的结果计数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM