我正在在MSSQL存儲過程中,我想我的結果由間隔一天,我不確定組,如果這是正確的,但:如何在特定時間間隔內正確地GROUP BY日期時間列?
(這是一個部分)
INSERT @Results
(
[Day],
[Month],
[Year],
[Result]
)
SELECT
DATEPART(DD, DATEADD(MI, @GmtOffset, EventDate)),
DATEPART(MM, DATEADD(MI, @GmtOffset, EventDate)),
DATEPART(YY, DATEADD(MI, @GmtOffset, EventDate)),
Result = CASE WHEN @Metric = 'Take Rate' THEN NULL ELSE COUNT(*) END
FROM BundleEvent
WHERE BundleEventTypeId = CASE WHEN @Metric = 'Take Rate' THEN @TypeTakeId ELSE @BundleEventTypeId END
AND EventDate >= @StartTime AND EventDate <= @EndTime
GROUP BY
DATEPART(YY, DATEADD(MI, @GmtOffset, EventDate)),
DATEPART(MM, DATEADD(MI, @GmtOffset, EventDate)),
DATEPART(DD, DATEADD(MI, @GmtOffset, EventDate))
我擔心是否最終將按照年份或月份不重要的日期對數據進行分組。有誰知道我是否正確地做到了這一點? EventDate
是DateTime
字段,我想按日間隔執行GROUP BY
。
感謝
編輯: 這是正確的做法,一個簡單的格式交換......有時我需要更多的咖啡。
INSERT @Results
(
[Date],
[Result]
)
SELECT
CAST(DATEADD(MI, @GmtOffset, BundleEvent.EventDate) AS DATE),
Result = CASE WHEN @Metric = 'Take Rate' THEN 0 ELSE COUNT(*) END
FROM dbo.BundleEvent WITH (NOLOCK)
JOIN dbo.BundleUser WITH (NOLOCK)
ON BundleEvent.BundleId = BundleUser.BundleId
JOIN dbo.Bundle WITH (NOLOCK)
ON BundleEvent.BundleId = Bundle.BundleId
WHERE BundleEvent.EventDate >= @StartTimeGmt AND BundleEvent.EventDate <= @EndTimeGmt
AND BundleEvent.BundleEventTypeId = CASE WHEN @Metric = 'Take Rate' THEN @TypeTakeId ELSE @BundleEventTypeId END
AND BundleUser.UserId = CASE WHEN @UserId IS NULL THEN BundleUser.UserId ELSE @UserId END
AND Bundle.BundleType = 1
GROUP BY
CAST(DATEADD(MI, @GmtOffset, BundleEvent.EventDate) AS DATE)
然後我做了子與交換格式比較:
CAST(
(SELECT COUNT(*)
FROM dbo.BundleEvent WITH (NOLOCK)
JOIN dbo.BundleUser WITH (NOLOCK)
ON BundleEvent.BundleId = BundleUser.BundleId
JOIN dbo.Bundle WITH (NOLOCK)
ON BundleEvent.BundleId = Bundle.BundleId
WHERE CAST(DATEADD(MI, @GmtOffset, BundleEvent.EventDate) AS DATE) = [Date]
AND BundleEvent.BundleEventTypeId = @TypeTakeId
AND BundleUser.UserId = CASE WHEN @UserId IS NULL THEN BundleUser.UserId ELSE @UserId END
AND Bundle.BundleType = 1)
AS DECIMAL(5,2)
因此,在本質查詢被正確地匹配起來,並使用新的格式。
你的測試數據產生了什麼? – 2012-01-10 01:21:10