我有一個問題,我需要從一個列按列分組得到最早的日期值,但按順序分組。SQL查詢找到依賴於列值更改的最早日期
下面是一個示例表:
if object_id('tempdb..#tmp') is NOT null
DROP TABLE #tmp
CREATE TABLE #tmp
(
UserID BIGINT NOT NULL,
JobCodeID BIGINT NOT NULL,
LastEffectiveDate DATETIME NOT NULL
)
INSERT INTO #tmp VALUES (1, 5, '1/1/2010')
INSERT INTO #tmp VALUES (1, 5, '1/2/2010')
INSERT INTO #tmp VALUES (1, 6, '1/3/2010')
INSERT INTO #tmp VALUES (1, 5, '1/4/2010')
INSERT INTO #tmp VALUES (1, 1, '1/5/2010')
INSERT INTO #tmp VALUES (1, 1, '1/6/2010')
SELECT JobCodeID, MIN(LastEffectiveDate)
FROM #tmp
WHERE UserID = 1
GROUP BY JobCodeID
DROP TABLE [#tmp]
這個查詢將返回3行,與所述最小值。
1 2010-01-05 00:00:00.000
5 2010-01-01 00:00:00.000
6 2010-01-03 00:00:00.000
我所尋找的是該組按順序排列,並返回一個以上的JobCodeID,像這樣:
5 2010-01-01 00:00:00.000
6 2010-01-03 00:00:00.000
5 2010-01-04 00:00:00.000
1 2010-01-05 00:00:00.000
這是可能沒有遊標的情況?
+1優雅的解決方案 – TheVillageIdiot 2010-01-09 17:28:14