【发布时间】:2012-10-31 21:18:02
【问题描述】:
我这里有一个非常简单的表格:
表 1
身份证
日期1
日期2
日期3
我想按月份和ID汇总数据,所以查询结果是这样的:
table1的查询结果
身份证
月
不为空的月份中 Date1 的计数
从不为空的月份开始的 Date2 计数
从不为空的月份开始的 Date3 计数
我目前在下面有这个查询,它只提取一个月,具体取决于 @month 指定的内容:
Select ID, @month as [Month]
Sum((Case When Month(Date1)=@month then 1 else 0 END)) as [Date1 Count],
Sum((Case When Month(Date2)=@month then 1 else 0 END)) as [Date2 Count],
Sum((Case When Month(Date3)=@month then 1 else 0 END)) as [Date3 Count],
From Table1
Group by ID
但我想提取所有 12 个月,但是数据库没有月份表或日历表,我如何创建一个包含每个 ID 的所有 12 个月的查询并获取他们的Date1、Date2 和 Date3 的相应月计数?顺便说一句,许多条目的日期之一为空,例如Date1 和 Date3 = Null 而 Date2 = '01/01/2008'。提前致谢!
【问题讨论】:
-
您是否也关心年份,或者您希望将
01/01/2008与01/01/2012聚合在一起,例如?
标签: sql