我有一个表(SQL Server 2014中包含以下列:
Type ProjectNr CreatedDate Subject Body
------------------------------------------------------------------------
101 1000 31-01-2017 12345 Lorem ipsum dolor sit amet
104 1000 31-01-2017 23456 Lorem ipsum dolor sit amet
109 1000 31-01-2017 34567 Lorem ipsum dolor sit amet
109 1000 31-09-2017 45678 Lorem ipsum dolor sit amet
109 1000 31-11-2017 56789 Lorem ipsum dolor sit amet
109 1001 31-10-2017 67890 Lorem ipsum dolor sit amet
我只需要所有类型" 109"使用每个ProjectNr的最新CreateDate
这是必要的结果:
Type ProjectNr CreatedDate Subject Body
-----------------------------------------------------------------------
109 1000 31-11-2017 56789 Lorem ipsum dolor sit amet
109 1001 31-10-2017 67890 Lorem ipsum dolor sit amet
行的排序不是必需的
答案 0 :(得分:1)
使用dense_rank
或row_number
函数为每个行组提供一个行号,按Type
和ProjectNr
/ {降序排列} CreatedDate
列。然后选择行号为1的行。
<强>查询强>
;with cte as(
select [rn] = dense_rank() over(
partition by [Type], [ProjectNr]
order by [CreatedDate] desc
), *
from [your_table_name]
where [Type] = 109
)
select [Type], [ProjectNr], [CreatedDate], [Subject], [Body]
from cte
where [rn] = 1;
答案 1 :(得分:0)
where type = 109 and createddate = MAX(CreatedDate) GROUP BY projectnr