我有2列(ColA,ColB)都是数据类型Nvarchar 我需要col B对于ColA中的值是唯一的
某些行在ColA中有2个不同的值,在ColB中具有相同的值(非唯一)。
我想编写一个查询来显示ColB值以及末尾的字母“D”(作为重复),其中ColA中的值正在变为其他值。
答案 0 :(得分:1)
据我所知,您希望标记需要更改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上的完整示例。