我正在尝试编写一个查询,该查询将返回第1列中的字段相同的记录,但在特定的其他列中至少存在一个差异。
例如:
我想比较第1列中每个值的第2列和第4列。如果存在差异,我需要返回两行中的所有字段。
此数据集
列1 |列2 |栏3 | Column4 | Column5
空气过滤器|形状|圆形|颜色|红色
空气过滤器|形状|面板
Nerf Bar |表面处理|抛光|材质|不锈钢
Nerf Bar | Finish |粉末涂层|材料|不锈钢
发动机罩|颜色|黑色|表面处理|粉末涂层
发动机罩|表面处理|粉末涂层|彩色|黑色
将返回:
空气过滤器|形状|圆形|颜色|红色
空气过滤器|形状|面板|空| NULL
因为第4列中的值在记录之间不匹配
和
发动机罩|颜色|黑色|表面处理|粉末涂层
发动机罩|表面处理|粉末涂层|彩色|黑色
因为第2列和第4列中的值在记录之间不匹配
我只能为每个部分获得一条记录。
以下是我尝试过的代码:
Select *
from [My_Table] as a
where exists(select null from [My_Table] as b
where a.column1 = b.column1
and (a.column2 = b.column2
or a.column3 = b.column3
or a.column4 = b.column4
or a.column5 = b.column5))
答案 0 :(得分:1)
SELECT t1.column1, t1.column2, t1.column3, t1.column4, t1.column5
FROM My_Table t1
INNER JOIN My_Table t2
ON t1.column1 = t2.column1
WHERE COALESCE(t1.column2,'') <> COALESCE(t2.column2,'')
OR COALESCE(t1.column4,'') <> COALESCE(t2.column4,'')