0

我有一个查询,它返回如下内容:

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 分组的自身副本中,但这是一个非常密集的查询,并且在优化方面再调用一次可能成本太高

4

3 回答 3

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
于 2013-02-22T19:52:04.713 回答
0
select ID, FieldName, Value, SeqNo
from tablename
group by FieldName, Value, SeqNo, ID
having max(SeqNo)
于 2013-02-22T19:15:28.347 回答
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          
于 2013-02-22T19:45:39.963 回答