仅选择值与两行之间不匹配的列

时间:2015-02-23 09:14:27

标签: sql sql-server

是否可以只获取SQL SERVER中具有不同值的列?

TABLE 1
id            Name                     Desig
1             Ali                      Assistant.Manager
1             Ali                      Manager
2             John                     Manager

现在,如果我想检查id 1的状态,它应该返回Designation(即Assistant.Manager& Manager)

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT T1.Desig
FROM TableName T1 JOIN
(SELECT id,name
FROM TableName
GROUP BY id,name
HAVING COUNT(DISTINCT Desig) > 1) T2
ON T1.id=T2.id AND T1.name=T2.name

结果:

DESIG
Assistant.Manager
Manager

请参阅SQL Fiddle中的结果。

答案 1 :(得分:0)

如果id是一个身份,当您发表评论时,您可以选择每个名称的最新行,如:

select  *
from    (
        select  row_number() over (
                    partition by name
                    order by id desc) as rn
        ,       *
        ) as SubQueryAlias
where   rn = 1 -- Latest row per name