2017-01-16 14 views
0
Select 
    Query_2.[Date Assigned], Query_2.ID, 
    Query_2.Aging, Query_2.[Date/Time Opened] 
From  
    Query_2 
Where 
    (((Query_2.[Date Assigned]) In (Select [Date Assigned] 
            From Query_2 As Tmp 
            Group By [Date Assigned], ID 
            Having Count(*) > 1 
             And ID = Query_2.ID)) 
    And ((Query_2.[Date/Time Opened]) = (Select Max([Date/Time Opened]) 
             From Query_2 As Tmp 
             Group By [Date Assigned], ID 
             Having Count(*) > 1 
              And ID = Query_2.ID)) 
     ) 

誰かが私を助けてくれますか?最初にこれを実行したときに最初にクエリが正常に実行されたので、エラーとなるのはわかりませんでした。このサブクエリで最大1つのレコードを返すことができます。エラー

ありがとうございます!

注意事項を追加しました:

基本的に、私は重複を削除しようとした、重複は、最新であるべきと私はのようにユニークな取得したいすべてが最初の日付です。私はこれがはっきりしていることを望む私は後で答えを見直し、それが動作するかどうかを見ていきます。あなたのご親切に感謝します!

+0

スカラー値が1つ必要な箇所に複数のレコードを返すサブクエリがあります。 –

+0

GROUP BYのSELECT MAXは複数の行を返すことができます –

+1

DBMSを追加してください –

答えて

0

私はあなたがrow_number()であなたがより簡単にやりたいことができると思います。

select q2.* 
from (select q2.*, 
      row_number() over (partition by id order by [Date Assigned] desc, [Date/Time Opened] desc) as seqnum 
     from Query_2 q2 
    ) q2 
where seqnum = 1; 

これは、各idの最新割り当てられた日に、最新の開いた時間を持つレコードを取得します。これはあなたのクエリがしようとしているようです。

関連する問題