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

Sql 仅选择两行之间值不匹配的列,sql,sql-server,Sql,Sql Server,在SQL SERVER中是否可以只获取具有不同值的列 TABLE 1 id Name Desig 1 Ali Assistant.Manager 1 Ali Manager 2 John Manager 现在,如果我想检查id 1的状态,它

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

TABLE 1
id            Name                     Desig
1             Ali                      Assistant.Manager
1             Ali                      Manager
2             John                     Manager
现在,如果我想检查id 1的状态,它应该返回designoni.e Assistant.Manager&Manager

尝试以下操作:

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
请参见中的结果。

如果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

您正在使用哪个数据库?返回哪个名称很重要,还是可以是随机的?SQL Server 2008 R2我只想要以前更改过的列,而不是您以前确定的所有列?SQL表是一组无序的行,如果您没有要排序的列,则无法确定哪一行是第一行。我有标识为1,1的表id列。在上面的示例中,我只使用了3列,但如果表中有40、50列,并且只更改了2,3列的值。有没有办法我只能得到那些2,3列,这是以前的changed@user2625113:否,您必须在查询中指定列名。