2016-05-05 10 views
1

私は必要なすべての関連情報を現在返すこのクエリを持っていますが、ユニークなDISPLAYCLAIMNUMBER行だけを返す必要があります。私はそれの前にDISTINCTを投げてみましたが、それは私に無効な構文のエラーを与えます。私はかなり私のSELECTの真ん中に何かにDISTINCTを置く方法を混乱させる。データをExcelテーブルに送信するので、クエリの順序も重要です。私はこれが非常に非効率的だと確信していますが、データベースは非常に断片化しているので、1つのデータに対して複数のテーブルを参照する必要があります。方法があれば、気軽に改善してください。複数の列クエリから別の行を選択

SELECT cd.NAMECREFID, clm.CONTACTNAME, cd.ASSIGNEDPOLICY, clm.DISPLAYCLAIMNUMBER, clm.CAUSEOFLOSS, scp.PERILCODE, scp.DESCRIBE, clm.ASSIGNEDDATETIME, clm.CLOSEDATETIME, clp.PAYMENT 
FROM CLMSTAT clm 
inner join SCPERTBL scp on clm.ASSIGNEDPERILNUMBER = scp.PERILCODE 
inner join CLMPYMT clp on clm.ASSIGNEDCLAIMNUMBER = clp.ASSIGNEDCLAIMNUMBER 
inner join SNAMES sn on clm.CONTACTNAME = sn.NAME 
inner join TCUSDTL cd on sn.NAMEID = cd.NAMEID 
WHERE clm.CONTACTNAME Like '%Smith%' 
ORDER BY clm.CONTACTNAME, clm.ASSIGNEDDATETIME DESC 
+0

CLMSTATではDISPLAYCLAIMNUMBERが一意であるか、そこに重複していますか?それがユニークであれば、結合の1つが結果に重複を作成しています - 最初のステップは、どちらを見つけてそこから削除するかです。 –

答えて

2

あなたは、単にこれはあなたのSELECTリスト内のすべての列のユニークな組み合わせを提供します。この

SELECT 
DISTINCT -- at the start 
cd.NAMECREFID, clm.CONTACTNAME, cd.ASSIGNEDPOLICY, clm.DISPLAYCLAIMNUMBER, clm.CAUSEOFLOSS, scp.PERILCODE, scp.DESCRIBE, clm.ASSIGNEDDATETIME, clm.CLOSEDATETIME, clp.PAYMENT 
FROM CLMSTAT clm 
inner join SCPERTBL scp on clm.ASSIGNEDPERILNUMBER = scp.PERILCODE 
inner join CLMPYMT clp on clm.ASSIGNEDCLAIMNUMBER = clp.ASSIGNEDCLAIMNUMBER 
inner join SNAMES sn on clm.CONTACTNAME = sn.NAME 
inner join TCUSDTL cd on sn.NAMEID = cd.NAMEID 
WHERE clm.CONTACTNAME Like '%Smith%' 
ORDER BY clm.CONTACTNAME, clm.ASSIGNEDDATETIME DESC 

を試してみてください。

しかし、これがあなたが望むものではなく、単にclm.DISPLAYCLAIMNUMBERのユニークな値が必要な場合は、どうして安静が必要なのですか?そうでない場合、クエリのSELECTリストは以下のようになります

SELECT DISTINCT clm.DISPLAYCLAIMNUMBER 
FROM CLMSTAT clm 
... 
+0

私はデータ分析のために残りが必要ですが、これは私が望んだことをしたようです。私は「DISTINCT」によってすべてが影響を受けるという印象を受けました。たとえば、 'CONTACTNAME'ごとに1行しか表示されませんが、そうではありません。ご協力いただきありがとうございます! – Tangwheeler

0
SELECT cd.NAMECREFID, clm.CONTACTNAME, cd.ASSIGNEDPOLICY, clm.DISPLAYCLAIMNUMBER, clm.CAUSEOFLOSS, scp.PERILCODE, scp.DESCRIBE, clm.ASSIGNEDDATETIME, clm.CLOSEDATETIME, clp.PAYMENT 
FROM CLMSTAT clm 
inner join SCPERTBL scp on clm.ASSIGNEDPERILNUMBER = scp.PERILCODE 
inner join CLMPYMT clp on clm.ASSIGNEDCLAIMNUMBER = clp.ASSIGNEDCLAIMNUMBER 
inner join SNAMES sn on clm.CONTACTNAME = sn.NAME 
inner join TCUSDTL cd on sn.NAMEID = cd.NAMEID 
WHERE clm.CONTACTNAME Like '%Smith%' 
GROUP BY clm.DISPLAYCLAIMNUMBER 
ORDER BY clm.CONTACTNAME, clm.ASSIGNEDDATETIME DESC 
+0

私はこれを複数試してみました。それは常に構文エラーをスローするようです。あなたの正確な例も同様です。 – Tangwheeler

+0

GROUP BYを使用するには、GROUP BY以外のすべてのフィールドを集計する必要があります。 –

関連する問題