edc*_*dcs 4 sql sql-server select distinct
我有一个表,其中包含MSSQL数据库中一系列事件的数据:
ID Name Date Location Owner
--- --------------------------------------------------------- ----------- -------------------------------- -----------
1 Seminar Name 1 2013-08-08 A Location Name 16
2 Another Event Name 2013-07-30 Another Location 18
3 Event Title 2013-08-21 Head Office 94
4 Another Title 2013-08-30 London Office 18
5 Seminar Name 2 2013-08-27 Town Hall 19
6 Title 2013-08-20 Somewhere Else 196
7 Fake Seminar For Testing 2013-08-25 Fake Location 196
Run Code Online (Sandbox Code Playgroud)
希望您可以看到此表包含许多由我们的应用程序中的多个用户拥有的事件.我试图找出是否有一个查询,我可以用来为每个用户选择最近发生的事件.我认为显示我想要的最简单的方法是显示我正在寻找的理想结果表(基于今天的日期):
ID Name Date Location Owner
--- --------------------------------------------------------- ----------- -------------------------------- -----------
1 Seminar Name 1 2013-08-08 A Location Name 16
2 Another Event Name 2013-07-30 Another Location 18
3 Event Title 2013-08-21 Head Office 94
5 Seminar Name 2 2013-08-27 Town Hall 19
6 Title 2013-08-20 Somewhere Else 196
Run Code Online (Sandbox Code Playgroud)
我现在能想到的最好的是这个查询:
SELECT DISTINCT Owner, Date, ID FROM Seminars
GROUP BY Owner, Date, ID ORDER BY Date
Run Code Online (Sandbox Code Playgroud)
它并没有真正做我想做的事情,我认为真正的解决方案将比这更复杂,因为我需要以某种方式选择基于今天的日期.
WITH CTE
AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY Owner
ORDER BY Date DESC) AS RN
FROM tablename
)
SELECT ID, Name, Date, Location, Owner
FROM CTE
WHERE RN = 1;
Run Code Online (Sandbox Code Playgroud)