我有以下查詢,其中@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