Sql 如何仅在月份介于两个记录字段值之间时按月份分组

Sql 如何仅在月份介于两个记录字段值之间时按月份分组,sql,sql-server,Sql,Sql Server,我有一个包含三个字段的SQL表 CreatedTime(日期时间) 退休时间(日期时间) 名称(varchar) 我想为以下内容创建一个查询: 获取日期范围并为每个记录提供计数(按月分组),其中((CreatedTime=DateInRange)) 示例: 查询参数(日期范围)开始日期=2013年1月6日,结束日期=2013年1月12日 结果: 月份计数 2013年6月5日 2013年7月4日 2013年8月4日 2013年9月8日 2013年10月4日 2013年11月9日 12/2013 1

我有一个包含三个字段的SQL表
CreatedTime(日期时间)
退休时间(日期时间)
名称(varchar)

我想为以下内容创建一个查询:
获取日期范围并为每个记录提供计数(按月分组),其中((CreatedTime=DateInRange))

示例:
查询参数(日期范围)开始日期=2013年1月6日,结束日期=2013年1月12日

结果:
月份计数
2013年6月5日
2013年7月4日 2013年8月4日 2013年9月8日 2013年10月4日 2013年11月9日 12/2013 12

因此,有8条记录与CreatedTime<9/2013和RetiredTime>9/2013相匹配
基本上,它会遍历6个月中的每一个月,并返回符合条件的计数


提前感谢您的帮助。

您的问题使您不清楚要用于显示的
日期
列,因此您必须填写该列

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
选择CAST(DATEPART(mm,DATECOL)作为VARCHAR(2))+'/'+CAST(DATEPART(yyy,DATECOL)作为VARCHAR(4)),
计数(*)
从桌子上
其中CreatedTime<@CreatedTime和RetiredTime>@RetiredTime
按CAST分组(DATEPART(mm,DATECOL)作为VARCHAR(2))+'/'+CAST(DATEPART(yyyy,DATECOL)作为VARCHAR(4))
按1订购

假设您希望按创建时间分组,有很多方法可以做到这一点,下面是我推荐的方法。如果希望按RetiredTime分组,只需更改值即可

SELECT CONCAT(YEAR(CreatedTime), '/', MONTH(CreatedTime)), COUNT(*) FROM TABLENAME
WHERE ((CreatedTime <= DateInRange) and (RetiredTime >= DateInRange))
GROUP BY CONCAT(YEAR(CreatedTime), '/', MONTH(CreatedTime))
从TABLENAME中选择CONCAT(年(CreatedTime)、“/”、月(CreatedTime))、COUNT(*)
其中((CreatedTime=DateInRange))
按CONCAT(年(CreatedTime)、“/”、月(CreatedTime))分组

但您在结果中使用的日期是什么?createddate或retiredtime?我希望Date列包含从开始到结束的每个月的查询参数(2013年6月-2013年12月)。因此,每个记录都需要根据2013年6月、2013年7月、2013年8月进行评估。。。确定该日期是否介于CreatedTime和RetiredTime之间。如果为True,则添加到count。因此,如果每个记录的CreatedTime和RetiredTime之间在2013年6月进行评估,则每个记录的评估时间为2013年7月,以此类推。。。我不确定这是否是SQL查询中无法完成的,并且需要使用更通用的查询进行额外的数据操作。。谢谢这类似于在2013年6月、2013年7月、2013年8月等每个月运行单独的查询。。。提供当月介于CreationDate和RetiredDate之间的记录计数。