我想在组中找到包含最新日期的行。但是,如果该行在特定列中具有某个特定值,那么我们必须完全消除该行 对于下表中的Ex:
ID FK_ID DateTiME Value
1 1 2017-06-01 a
2 1 2017-06-02 a
3 2 2017-06-04 b
4 2 2017-06-03 a
5 2 2017-06-01 b
6 3 2017-01-01 c
7 3 2017-01-01 a
这里我希望输出为
FK_ID DateTime
1 2017-06-02
3 2017-01-01
我想在FK_ID
上分组,然后想要群组中的最大DateTime
值。但是,如果组中选定的行Value
为b
,那么我们应该完全跳过该行,并且不希望它出现在输出中。
例如,在上表(1)中,FK_ID
2的Max DateTime行是
3 2 2017-06-04 b
但是,由于此行的值为b
,我们不希望它在输出中。
答案 0 :(得分:3)
使用row_number
With CTE as
(
select t1.*, row_number() over (partition by FK_ID order by datetime desc) rn
from MyTable t1
)
select *
from CTE
where rn = 1
and value <> 'b'
答案 1 :(得分:2)
以下是此方法的一种方式
select top 1 with ties *
from yourtable a
where not exists(select 1 from yourtable b where a.FK_ID =b.FK_ID and b.Value = 'b')
order by row_number()over(partition by FK_ID order by [DateTiME] desc)