用于比较两行并从同一个表中获取差异的SQL查询

时间:2016-09-11 16:45:40

标签: sql compare row

我想比较同一个ID的两行,我只是希望得到差异。

e.g。

立即

|---ID---||--Col_1--||--Col_2--||--Col_3--||--Col_4--|
|----1---||----2----||----4----||----5----||----6----|
|----1---||----3----||----4----||----4----||----6----|
|----2---||----2----||----3----||----3----||----2----|

RESULT

|---ID---||--Col_1--||--Col_2--||--Col_3--||--Col_4--|
|----1---||----3----||---NULL--||----4----||---NULL--|


P.S:我正在使用SQL Server 2012

1 个答案:

答案 0 :(得分:1)

如果我正确解释您的问题,您希望将相同ID的行组合起来并应用以下规则:

  • 如果值相同,则将值放入行中。
  • 如果值不同,请输入NULL
  • 如果只有一行,则不要包含id

这是一个带有一些过滤和比较逻辑的聚合查询:

select id,
       (case when min(col1) = max(col1) then min(col1) end) as col1,
       . . .
from t
group by id
having count(*) > 1;