我有一个返回如下内容的查询:
ID FieldName Value SeqNo
-- --------- ----- -----
45 {AAA} Something 1
12 {BBB} Something2 2
34 {CCC} Something3 3
23 {BBB} Something4 4
我需要清除所有具有FieldNames的记录,这些记录已经存在于结果集中但具有更高的序列号。 因此,在上面的示例中,我的结果集不应返回ID = 12。
更新 我知道我可以通过FieldName / SeqNo将这个查询加入到自己的副本中,但这是一个相当密集的查询,再次调用它可能在优化方面成本太高
答案 0 :(得分:1)
使用'row_number()'和'cte'
;with cte as (
select id, fieldname, value, seqnum, row_number() over (partition by fieldname order by seqnum desc) rn
from table
)
Select id, fieldname, value, seqnum
From cte
Where rn=1
答案 1 :(得分:0)
select ID, FieldName, Value, SeqNo
from tablename
group by FieldName, Value, SeqNo, ID
having max(SeqNo)
答案 2 :(得分:0)
Select ID, FieldName, Value, SeqNo
From [tableExample] t
Where Not Exists (Select 1
From [tableExample] t2
Where t.fieldName = t2.fieldName
And t.SeqNo < t2.SeqNo