SQL select,pad按时间顺序丢失了几个月

请注意,sql在以下组的输出中缺少2015-02和2015-03个月.如果一个月没有数据,我想显示月份和0.任何人都知道如何去做这个?
SELECT convert(char(7),MeterReadDate,121),count(*)
FROM [myTable]
where (MeterReadDate > dateadd(d,-356,getdate()))
group by  convert(char(7),121)
order by  convert(char(7),121)

样本数据:

YYYY-MM COUNT
2014-06 23
2014-07 42
2014-08 80
2014-09 92
2014-10 232
2014-11 88
2014-12 8
2015-01 5
2015-04 2
2015-05 1

仍然无法清除缺失的行,这里是我的地方..

DECLARE @StartDate DATETIME = dateadd(m,-12,getdate()),@EndDate DATETIME = getdate(),@DATE DATETIME

DECLARE @TEMP AS TABLE (MeterReadDate datetime)

SET @DATE = @StartDate

WHILE @DATE <= @EndDate
BEGIN
     INSERT INTO @TEMP VALUES ( @DATE)
    SET @DATE = DATEADD(MONTH,1,@DATE)
END



SELECT convert(char(7),t.MeterReadDate,count(*)

  FROM @TEMP m left join
     [myTable] t
     on convert(char(7),121) = convert(char(7),m.MeterReadDate,121)

  where (t.MeterReadDate > dateadd(m,getdate()))
  group by  convert(char(7),121)
  order by  convert(char(7),121)

@R_404_323@

如果您不想超出结果的最短和最长日期,则可以执行以下操作:
WITH    cte
          AS ( SELECT convert(char(7),121) AS [Date],COUNT(*) AS [Count]
               FROM [myTable]
               WHERE (MeterReadDate > dateadd(d,getdate()))
               GROUP by  convert(char(7),121)
             ),minmax
          AS ( SELECT   CAST(MIN([Date] + '-01') AS DATE) AS mind,CAST(MAX([Date] + '-01') AS DATE) maxd
               FROM     cte
             ),calendar
          AS ( SELECT   mind,CONVERT(CHAR(7),mind,121) AS cmind
               FROM     minmax
               UNION ALL
               SELECT   DATEADD(mm,calendar.mind),DATEADD(mm,121)
               FROM     calendar
                        CROSS JOIN minmax
               WHERE    calendar.mind < minmax.maxd
             )
    SELECT  c.cmind AS [Date],ISNULL(cte.[Count],0) AS [Count]
    FROM    calendar c
            LEFT JOIN cte ON c.cmind = cte.[Date]
    OPTION  ( MAXRECURSION 0 )

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03