我在同一天有多行,我想要獲取最近五天的最新日期時間。如何使用最近的日期時間查找每天的最新日期時間
id username date
1 prashant 2013-10-09 05:25:46.000
2 rohit 2013-10-09 05:26:40.000
3 sam 2013-10-09 05:33:53.000
4 sohan 2013-10-09 05:26:15.000
5 mohan 2013-10-09 05:37:34.000
我在同一天有多行,我想要獲取最近五天的最新日期時間。如何使用最近的日期時間查找每天的最新日期時間
id username date
1 prashant 2013-10-09 05:25:46.000
2 rohit 2013-10-09 05:26:40.000
3 sam 2013-10-09 05:33:53.000
4 sohan 2013-10-09 05:26:15.000
5 mohan 2013-10-09 05:37:34.000
SELECT id,name,MAX([date])
FROM tableName
WHERE DATEDIFF(day,[date],GETDATE()) <= 5
GROUP BY id,name
試試這個
Select ID,
Name,
Date
From Table1
where Date
IN (-- we are selecting the latest date for each day
SELECT MAX([date])Date
FROM Table1
GROUP BY DATEPART(dd, [date])
)
如果你想只對過去的五天裏獲取記錄然後用這個
Select ID,
Name,
Date
From Table1
where Date
IN (-- we are selecting the latest date for each day
SELECT MAX([date])Date
FROM Table1
WHERE DATEDIFF(day,[date],GETDATE()) <= 5
GROUP BY DATEPART(dd, [date])
)
CREATE TABLE UserDate (
id INT NOT NULL IDENTITY CONSTRAINT PK_UserDate PRIMARY KEY CLUSTERED
,username nvarchar(50) NOT NULL
,dt datetime
)
INSERT INTO UserDate (username, dt)
VALUES
('usr1','2013-10-07 05:25:46.000')
,('usr2','2013-10-08 05:26:40.000')
,('usr3','2013-10-08 05:33:53.000')
,('usr4','2013-10-09 05:26:15.000')
,('usr5','2013-10-09 05:37:34.000')
,('usr6','2013-10-10 05:25:46.000')
,('usr7','2013-10-10 05:26:40.000')
,('usr8','2013-10-11 05:33:53.000')
,('usr9','2013-10-12 05:26:15.000')
,('usr10','2013-10-12 05:37:34.000')
SELECT * FROM UserDate
;With Last5 as (
SELECT
id,
username,
dt,
DENSE_RANK() OVER (ORDER BY CAST(dt as Date) DESC) OrderByDay,
ROW_NUMBER() OVER (PARTITION BY CAST(dt as Date) ORDER BY dt DESC) OrderByTime
FROM UserDate
)
SELECT *
FROM Last5
WHERE OrderByDay <= 5
and OrderByTime = 1
ORDER BY OrderByDay
GO
你能告訴我們你試過了什麼嗎? –
http://stackoverflow.com/questions/tagged/greatest-n-per-group?sort=votes –