我有 2 列(ColA、ColB)都是数据类型 Nvarchar。
我需要 col B 对于 ColA 中的值是唯一的
有些行在 ColA 中有 2 个不同的值,在 ColB 中有相同的值(非唯一)。
我想编写一个查询来显示 ColB 值以及最后的字母“D”(重复),其中 ColA 中的值正在更改为其他值。
我有 2 列(ColA、ColB)都是数据类型 Nvarchar。
我需要 col B 对于 ColA 中的值是唯一的
有些行在 ColA 中有 2 个不同的值,在 ColB 中有相同的值(非唯一)。
我想编写一个查询来显示 ColB 值以及最后的字母“D”(重复),其中 ColA 中的值正在更改为其他值。
据我了解,您想标记需要更改 ColB 值的行。
如果是这样试试这样的
SELECT t1.COLA,
t1.COLB + 'D'
FROM TABLE1 t1
INNER JOIN TABLE1 t2
ON t1.COLB = t2.COLB
AND t1.COLA != t2.COLA
这只会显示“双”行。如果要显示所有行,只需在末尾添加一个 UNION:
SELECT t1.COLA,
t1.COLB + 'D'
FROM TABLE1 t1
INNER JOIN TABLE1 t2
ON t1.COLB = t2.COLB
AND t1.COLA != t2.COLA
UNION
SELECT *
FROM TABLE1
WHERE COLA NOT IN (SELECT t1.COLA
FROM TABLE1 t1
INNER JOIN TABLE1 t2
ON t1.COLB = t2.COLB
AND t1.COLA != t2.COLA)
请参阅SQL Fiddle中的完整示例。