We can use partition by keyword on two fields in SQL Server.
Suppose I want to fetch records max entry of each user of
every day.
(
LogID INT,
UserID INT,
LogonTime DATETIME
)
INSERT INTO @Table
SELECT 1,3,'2012-04-20 11:11:20.933' UNION ALL
SELECT 2,3,'2012-04-20 11:11:16.807' UNION ALL
SELECT 3,5,'2012-04-20 11:12:16.807' UNION ALL
SELECT 4,3,'2012-04-23 05:11:57.600' UNION ALL
SELECT 5,4,'2012-04-23 06:23:57.600' UNION ALL
SELECT 6,4,'2012-04-23 06:30:50.600' UNION ALL
SELECT 7,3,'2012-04-23 09:30:12.847' UNION ALL
SELECT 8,5,'2012-04-23 10:30:12.847'
SELECT * FROM @Table
;WITH CTE AS
(
SELECT UserID,LogOnTime,ROW_NUMBER() OVER (PARTITION BY UserID,CAST(LogOnTime AS DATE) ORDER BY LogOnTime DESC) AS RNo FROM @Table
)
SELECT UserID,LogOnTime FROM CTE
WHERE
RNo = 1
That’s It.
Enjoy Learning.
No comments:
Post a Comment