0

我有一个这样的表,输入参数 RevParam 上有:

Key Rev IsCurrent
=====================
abc 0   TRUE
def 0   TRUE
ghj 2   FALSE
ghj 0   TRUE
klm 0   TRUE
def 1   FALSE
abc 1   FALSE
abc 2   FALSE

我想Key成为一个独特的价值。如果RevParam设置了应该查看所有具有该 Rev 值的行,则缺少的Key应该有:修订 0。像这样:

Result if RevParam = 1      

abc 1   FALSE
def 1   FALSE
ghj 0   TRUE
klm 0   TRUE

Result if revisionParameter = 0     

abc 0   TRUE
def 0   TRUE
ghj 0   TRUE
klm 0   TRUE

这个问题困扰了我一整天,请大家帮帮我!

4

2 回答 2

4
WITH records
AS
(
    SELECT  [key], [rev], [IsCurrent],
            ROW_NUMBER() OVER(PARTITION BY [key]
            ORDER BY CASE WHEN [rev] = 1          -- <<== change REV value here
            THEN 0 ELSE 1 END) rn
    FROM    tableName
    WHERE   [Rev] IN (1,0)
)
SELECT  [key], [rev], [IsCurrent]
FROM    records 
WHERE   rn = 1
于 2013-04-12T12:31:34.447 回答
0

如果 RevParam = 1 的结果

abc 1 假 def 1 假 ghj 0 真 klm 0 真

rev 值为 0 和 1。请明确说明

于 2013-04-12T12:32:45.710 回答