0

1 つのテーブルに 3 つの列 (code、code alt、product) があります。コード列に重複データがあります。コード列を繰り返さずにすべての結果を残したい。私はこれで試します

 Select code, code alt, product from table
 where code in 
  (
     select code from table
     group by code 
     having count (code)=1
     )

ただし、すべての結果が表示されるわけではありません。

ありがとう

4

1 に答える 1

0

同じコードを持つ一連の行から特定のコードを持つ 1 行だけを残したい場合は、複数の行からどれを残したいかを決める必要があります。

同じコードで行をランク付けし、より高いランク値 (たとえば) で行を選択できるようにするための基準が必要です。以下のスクリプトは、特定のコードを含むランダムな行を 1 つだけ残します。

これは、アイデアを示す単なる例であり、SQL Server を対象としています。DBMS を指定していないためです。

with [src] as (
    select code, [code alt], product, rank() over(partition by code order by newid()) [rank]
    from [table])
select * from [src] where [rank] = 1

ランキング機能

于 2013-11-10T17:25:29.020 に答える