0

2 つの列 (ColA、ColB) があり、どちらも Nvarchar データ型です。
ColA の値に対して col B を一意にする必要があります

一部の行には、ColA に 2 つの異なる値があり、ColB には同じ値 (一意ではない) があります。

ColA の値が別のものに変化している、最後に文字 "D" (重複として) と共に ColB 値を表示するクエリを作成したいと考えています。

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 に答える