Sql 仅选择两行之间值不匹配的列
在SQL SERVER中是否可以只获取具有不同值的列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的状态,它
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:否,您必须在查询中指定列名。