【问题标题】:How to show 'o' value for month and year, if no record exists for that month/year in table [duplicate]如果表中没有该月/年的记录,如何显示月和年的“o”值[重复]
【发布时间】:2012-12-06 05:44:59
【问题描述】:

可能重复:
SQL Group and Sum By Month - Default to Zero

在我的表格中,我有几个月和几年没有记录,所以我需要为这些记录输入“0”,并且需要显示从“2006”到“2012”的所有月份和年份,请建议我

提前致谢

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    dummy 是你真正的桌子......

    WITH DummyDates (Date) AS (
        SELECT DATEADD(DAY, DATEDIFF(DAY, 0, '20121231') - DATEDIFF(DAY, '20060101', '20121231'), 0)
            UNION ALL SELECT DATEADD(DAY, 1, Date)
                FROM DummyDates
                WHERE DATEADD(DAY, 1, Date) <= '20121231')
    SELECT DatePart(yy,DummyDates.Date) as [Year],DATEPART(MM,DummyDates.Date) as [Month],SUM(Case when dummy.date is null then 0 else 1 end) as cnt
    FROM DummyDates 
    LEFT Join dummy on dummy.Date=DummyDates.Date
    Group by DatePart(yy,DummyDates.Date),DATEPART(MM,DummyDates.Date)
    Order by DatePart(yy,DummyDates.Date),DATEPART(MM,DummyDates.Date)
    OPTION (MAXRECURSION 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多