我有以下查询,其中@BeginTime是月份的第一天,而@EndTime是月份的最后一天。通过sql查询将年份和月份添加到组
SET @BeginTime = RTRIM(@BeginTime) + ' 00:00:00'
SET @EndTime = RTRIM(@EndTime) + ' 23:59:59'
select C.Name , COUNT(DISTINCT D.Id) from DriverLic D
INNER JOIN Clov C WITH (NOLOCK) ON D.CId = C.CId
AND ((D.RDate < @EndTime)
AND (D.UrDate > @BeginTime))
group by C.Name
我得到的输出是这样的:
Name Count(D.Id)
AC 22
AB 32
CD 11
我想获得的输出是这样的:
Year Month Name Count(D.id)
2013 8 AC 22
2013 8 AB 32
2013 8 CD 11
有没有一种方法,我可以做到这一点?
1.您的参数不构成部分查询? 2.我怀疑你很可能[错误地处理了你的日期范围](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range -queries.aspx),我想你正在用'23:59:59'创建日期,所以你可以使用'between'运算符,忘记在'23:59:59'之后和00之前:00:00'。 – GarethD
嘿,我正在使用BeginTime和EndTime,我把它放在了问题的外面,因为我认为它会让读者容易阅读。我猜它会引起混淆。让我编辑它以包含类似于我在代码中的内容。谢谢您指出它。这是否有任何意义? – CodeNinja