0

MS SQL 2008R2 を使用しています。部分的なデータ セット (つまり、すべての列ではない) を使用していますが、重複する行を除外できませんでした。たとえば、クレームの行は次のとおりです。

Claim       Line Doctor Received    Paid
02195111345 1    22924  1995-11-13  2001-10-02  
02195111345 1    22924  1995-11-13  2001-10-02  
02195111345 2    22924  1995-11-13  2001-10-02  
02195111345 2    22924  1995-11-13  2001-10-02  
02195111345 3    22924  1995-11-13  2001-10-02  
02195111345 3    22924  1995-11-13  2001-10-02  
02195111345 4    22924  1995-11-13  2001-10-02  
02195111345 4    22924  1995-11-13  2001-10-02  
02195111345 5    22924  1995-11-13  2001-10-02  
02195111345 5    22924  1995-11-13  2001-10-02  

請求と行ごとに 1 行だけ選択したいと考えています。追加の列がありますが、Claim + Line の各組み合わせについて同じ情報が含まれています。

次のようなクエリを使用して、重複のある行を簡単に識別できます。

SELECT [ClaimNum],[ClaimNum_Line]
FROM [dbo].[DamagedClaims]
GROUP BY [ClaimNum],[ClaimNum_Line]
HAVING COUNT(*) > 1 

通常、このクエリを使用して派生テーブルを作成し、MAX(Version) などの別の列を使用してテーブルに結合しますが、重複を区別する列はありません。

検討しました

SELECT ClaimNum], Line, MAX(DOCTOR), MAX([Date Received]), MAX([Date Paid])

しかし、約 20 の列と 7 億 5000 万の行があり、それはかなりのオーバーヘッドのように思えました (私は SQL Server に非常に同情しています!)。より良い解決策はありますか?

ベスト、スコット

4

3 に答える 3

2

最大行の基礎となる列が表示されません。使用してみてくださいDISTINCT

SELECT DISTINCT *
FROM tableA
于 2012-09-04T14:09:07.633 に答える
2

あなたDISTINCTSELECT

SELECT DISTINCT Claim, Line, Doctor, Received, Paid
FROM tableName
于 2012-09-04T13:35:45.663 に答える
1

使用SELECT DISTINCT- http://www.w3schools.com/sql/sql_distinct.asp

于 2012-09-04T13:36:26.583 に答える