2016-07-04 11 views
0

このクエリは各レコードを2回返します。例えば、「SpCall」フィールドは主キーで、クエリが返します。SQLクエリは重複レコードを返します

result of the sql query

私は何かが足りないのですか?

QUERY:

SELECT CONVERT(varchar(10),BusinessRevenue.Entrance_Date,103) as 
     analistEnterance,Teams.DivisionName, Teams.DepartmentManager, 
     BusinessRevenue.Team_Name, BusinessRevenue.Account_Manager, 
     BusinessRevenue.Forigen_Infra_Count,BusinessRevenue.Partner_Infra_Count, 
     BusinessRevenue.Networks_Adsl_Count,BusinessRevenue.Pri_Or_Siptopri,BusinessRevenue.SIP, 
     BusinessRevenue.Centrex,BusinessRevenue.Hosting , BusinessRevenue.Vps_Server, 
     BusinessRevenue.Mabal,BusinessRevenue.Equipment_Income, BusinessRevenue.SpCall 
FROM BusinessRevenue LEFT JOIN Teams ON BusinessRevenue.Team_Name=Teams.TeamName 
WHERE 
    BusinessRevenue.SpCall IS NOT NULL 
    AND BusinessRevenue.Entrance_Year =2016 
    AND BusinessRevenue.Entrance_Date <='30/06/2016' 
    AND BusinessRevenue.Entrance_Date >='01/06/2016' 
    AND BusinessRevenue.Team_Name NOT IN('xxx','yyy') 

はあなたの時間と配慮のためにありがとうございました!

+0

spcall(20414)の2行全体を比較し、これらの2つの行が重複しているかどうか確認してください。 – StackUser

+1

これは結合です。したがって、他のテーブルのデータによっては、主キー列に結合しても結果セットに重複レコードが含まれることがあります。 – sudheeshix

+1

重複を削除するにはDISTINCT句を使用します。私にとっては、行が重複しているのは間違いありません(BusinessRevenueはチームテーブルよりも基数が多いと思います) –

答えて

1

「チーム」テーブルの主キーを使用して左結合を実行する必要があります。 "BusinessRevenue.SpCall"は "BusinessRevenue"テーブルの主キーですが、 "BusinessRevenue"と "TeamName"列 "Team"テーブルを左結合すると、 "チーム"内の複数の行"BusinessRevenue.Team_Name"と一致するので、SpCallは結果のテーブルの主キーではなくなります。

+0

上記のコメントに皆様、ありがとうございます。 – jonathana

0

SELECT DISTINCTを使用すると、重複する行が削除されます。

+0

それはdosent仕事、私はなぜ、多分チームの名前と部門はチームテーブルでは、最高の解決策ではないが、おそらく私のアプリケーションの情報を横断するので、図がわからない – jonathana

+0

私はあなたのクエリが多くを選択していることを認識しましたあなたが写真に表示しているものよりも高い重複した行を生成する別個の値が存在することは確かです。それらの列をすべて選択する必要がありますか?一致しない場合は、重複行の原因となっているものを削除できます。 – Sergio

関連する問題