我在数据库中的数据如下:计数几个月没有记录
+---------------------+-------------+
| CloseTime | Count |
+---------------------+-------------+
| 10.2.2014 13:19 | 1 |
| 5.12.2014 13:19 | 1 |
| 4.2.2014 13:19 | 1 |
| 2.1.2014 13:19 | 1 |
| 4.12.2014 13:19 | 1 |
+---------------------+-------------+
现在,我有这样的
SELECT DATENAME(MONTH, CLOSETIME) AS CLOSEMONTH, COUNT(*) as CNT
FROM TABLE
WHERE CLOSETIME >= DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE())-7, '19000101')
AND CLOSETIME < DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')
GROUP BY DATENAME(MONTH, CLOSETIME);
这导致
+---------------+-------+
| CloseTime | CNT |
+---------------+-------+
| February | 2 |
| January | 1 |
| December | 2 |
+---------------+-------+
的查询查询以最近7个月的数据获取方式工作。我需要的结果是
+---------------+-------+
| CloseTime | Count |
+---------------+-------+
| February | 2 |
| January | 1 |
| December | 2 |
| November | 0 |
| October | 0 |
| September | 0 |
| August | 0 |
+---------------+-------+
因此,如果有与后几个月关闭时间没有记录,它应该还是回到了一个月零计数。如何实现这一目标?我更喜欢SQL解决方案,这意味着没有任何过程或脚本。
我试图
SELECT DATENAME(MONTH,DATEADD(MONTH,-1,GETDATE())) as HELP_MONTH
UNION ALL
...
,然后加入它,但它并没有成功。
相关http://stackoverflow.com/q uestions/7121914/sql-group-and-sum-by-month-default-to-zero?rq = 1 – 2014-03-04 12:34:45
你工作在哪个'DBMS'? – Hamidreza
SQL Server 2008 R2,忘了提及,感谢您的通知! – DNac