2016-04-26 10 views
0

私は、レポートを取得するためにクエリを構築しようとしていますが、私は条件の残りの結果と3つの列が重複していることがわかりました。私のクエリ重複レコード

私が見逃したことはありますか?

列がA.MailTo,A.Texta.openTIME、あなたは別のエイリアスで複数回コラムを呼び出すときa.closedtime

SELECT DISTINCT U.FirstName, 
       U.LastName, 
       U.LogonID, 
       S.NAME Skillset, 
       A.MailTo,A.Text, 
       a.openTIME,a.closedtime 
FROM CLS.USERS U join CLS.Skillsets S on U.CCMSID =S.CCMSID 
       join CLS.CONTACTS C on S.ID=C.SKILLSET 
       join CLS.Actions A on A.agent=C.agent 
WHERE a.source=40 
and cast(a.closedtime as date)= cast(CURRENT_TIMESTAMP as date)-1 
+3

データはどのように見えますか(サンプルデータは正常です)?サンプルデータを見れば、何が出力として得られると思われますか?あなたは実際にあなたのクエリで何を見ていますか?それは間違っていますか?あなたのテーブル構造は何ですか? http://stackoverflow.com/help/how-to-ask –

+1

おそらく、それらのエージェントに対して2つ以上のアクションがあることを意味します。 –

+0

MySQLかOracleか「両方」でない場合は、該当しないタグを削除してください。 – mathguy

答えて

0

あなたが重複する列を受け取ることができる唯一の方法はあります、しかし、それはあなたがしている意味のように聞こえます重複行を戻します。彼らは重複ですべて同じ情報であれば、あなたは自分のコードを作る

group by u.logonID 

を投げることができます。

SELECT DISTINCT U.FirstName, 
      U.LastName, 
      U.LogonID, 
      S.NAME Skillset, 
      A.MailTo,A.Text, 
      a.openTIME,a.closedtime 
FROM CLS.USERS U join CLS.Skillsets S on U.CCMSID =S.CCMSID 
      join CLS.CONTACTS C on S.ID=C.SKILLSET 
      join CLS.Actions A on A.agent=C.agent 
WHERE a.source=40 
    and cast(a.closedtime as date)= cast(CURRENT_TIMESTAMP as date)-1 
group by u.logonID 

それはあなたが持つかもしれない重複を削除する必要があります。

0

連絡先ごとに多くの処理があるようです。

SELECT * from (
SELECT  U.FirstName, 
      U.LastName, 
      U.LogonID, 
      S.NAME Skillset, 
      count(A.ID) agentCount 
FROM CLS.USERS U join CLS.Skillsets S on U.CCMSID =S.CCMSID 
      join CLS.CONTACTS C on S.ID=C.SKILLSET 
      join CLS.Actions A on A.agent=C.agent 
WHERE a.source=40 
and cast(a.closedtime as date)= cast(CURRENT_TIMESTAMP as date)-1 
group by U.FirstName, 
      U.LastName, 
      U.LogonID, 
      S.NAME 
) order by agentCount desc;