0

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

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

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

4

1 回答 1

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中的完整示例。

于 2012-10-14T09:36:22.470 回答