SQL:当其他值更改时,将字符串添加到字段

时间:2012-10-14 08:40:08

标签: sql duplicates

我有2列(ColA,ColB)都是数据类型Nvarchar 我需要col B对于ColA中的值是唯一的

某些行在ColA中有2个不同的值,在ColB中具有相同的值(非唯一)。

我想编写一个查询来显示ColB值以及末尾的字母“D”(作为重复),其中ColA中的值正在变为其他值。

1 个答案:

答案 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上的完整示例。