0

Max t.[CreatedDateTime] (以下を参照) を返すように SQL コードを動作させて正しい結果を得ることができましたが、追加の列 t.[Owner] を追加し、結果に [CreatedDateTime] を表示したくありませんが、まだベースになっていますMax([t.CreatedDateTime]) の結果

SELECT i.[RecID] as AssigneeID, max(t.[CreatedDateTime]) CreatedDateTime
FROM Incident as i
Join Task as t On i.[RecID] =  t.[ParentLink_RecID] 
WHERE i.[Status] <> 'Closed'
AND t.[OwnerTeam] IS NOT NULL
group by i.[RecID]
Order By i.[RecID] DESC

現在の結果

AssigneeID              CreatedDateTime 
FFFE53B2305D47388937D1F5B6722DF3    2013-05-13 14:36:55.000
FFD64AD977A449258A88B9A404795631    2013-05-21 14:11:28.000
FFD557F622A34FD1A386B427B66ADAFC    2013-04-26 12:32:05.000

必要な結果

AssigneeID                          Owner
FFFE53B2305D47388937D1F5B6722DF3    Bob
FFD64AD977A449258A88B9A404795631    Fred
FFD557F622A34FD1A386B427B66ADAFC    Harry

ご協力いただきありがとうございます..

4

4 に答える 4

0

あなたは言いませんが、[columnName] 構文に基づいて、MS SQLServer を使用しているように見えます。その場合、効率的な解決策として RANK() OR ROW_NUMBER() を使用できます。

with rankedResult as (
  select i.[AssigneeID],
         t.[Owner],
         row_number() over( partition by i.[AssigneeID] 
                            order by t.[CreatedDateTime] desc, t.[Owner] ) seq
    from Incident i
    join Task t
      on t.[ParentLink_RecID] = i.[RecID]
   where i.[Status] <> 'Closed'
     and t.[OwnerTeam] is not null
)
select [AssigneeID],
       [Owner]
  from rankedResult
 where seq=1
;
于 2013-06-17T01:47:28.157 に答える