我有一个包含三个字段的SQL表
CreatedTime(日期时间)
退休时间(日期时间)
名称(varchar)
我想为以下内容创建一个查询:
获取日期范围并为每个记录提供计数(按月分组)((CreatedTime< = DateInRange)和(RetiredTime> = DateInRange))
例:
查询参数(DateRange)Start = 06/01/2013,End = 12/01/2013
结果:
月数
6/2013 5
7/2013 4
8/2013 4
9/2013 8
10/2013 4
11/2013 9
12/2013 12
所以有8条记录与CreatedTime< 9/2013 AND RetiredTime>二千〇一十三分之九
基本上它会经历6个月中的每一个,并返回符合条件的计数。
提前感谢您的帮助。
答案 0 :(得分:0)
您的问题无法清楚显示用于显示的DATE
列,因此您必须填写该列。
SELECT CAST( DATEPART(mm,DATECOL) AS VARCHAR(2)) + '/' + CAST( DATEPART(yyyy, DATECOL) AS VARCHAR(4)),
COUNT(*)
FROM TABLE
WHERE CreatedTime < @CreatedTime AND RetiredTime > @RetiredTime
GROUP BY CAST( DATEPART(mm,DATECOL) AS VARCHAR(2)) + '/' + CAST( DATEPART(yyyy, DATECOL) AS VARCHAR(4))
ORDER BY 1
答案 1 :(得分:0)
假设您希望按创建时间分组,有很多方法可以做到,下面是我的方法。如果您希望按退休时间分组,只需更改值。
SELECT CONCAT(YEAR(CreatedTime), '/', MONTH(CreatedTime)), COUNT(*) FROM TABLENAME
WHERE ((CreatedTime <= DateInRange) and (RetiredTime >= DateInRange))
GROUP BY CONCAT(YEAR(CreatedTime), '/', MONTH(CreatedTime))