示例数据
ID SettingID DifferentSettingID Value
1 100 Null True
2 100 5 False
3 101 Null 0
4 101 5 1
5 102 NULL 100
通缉结果
ID SettingID DifferentSettingID Value
2 100 5 False
4 101 5 1
5 102 NULL 100
SettingID必须是唯一的
答案 0 :(得分:3)
使用row_number
窗口函数:
;with cte as(select *, row_number()
over(partition by SettingID order by ID desc) rn from TableName)
select * from cte
where rn = 1
此窗口函数将按分区SettingID
值对分区中的行进行编号。例如,对于SettingID = 100
,它会将1
提供给ID 2
,将数字2
提供给ID 1
(因为desc ordering
)。对于SettingID = 101
也是如此...因此,每个分区(SettingID
的值)将获得该分区中最大row_number=1
的{{1}}。其余的只是按ID
过滤。