2017-03-09 5 views
0

こんにちは私は20分以内にいくつの "チケット"が開いていた(開始後および事前解決済み)かを取得するSQL dboを照会したいと思います現在の行「チケット」が作成されたときのウィンドウ。他のConcurrentとActiveのチケットを新しい列としてカウントする関数を含むSQLクエリ

目標テーブル(4つの項目が午前9時10分に8:50からアクティブであった場合):の線に沿って

ID CreateDate   ConcurrentItems 
123 12/1/2016 09:00  4 

が何か:COUNTにCreated_Dateがあろう

SELECT Ticket_ID as ID, Created_Date as CreateDate, 
    Count( 
      WHERE 
      WorkItemType = 'Work Request' AND 
      IncidentStartTime <= (Created_Date minus 10 minutes) AND 
      IncidentResolvedTime > (Created_Date plus 10 minutes) 
    )as ConcurrentItems 

FROM CurrentView 

SELECT

+0

ここにサンプル結果が表示されます。 –

+0

ちょっと赤い "目標表"のようにそこにサンプルがあった –

+0

ちょうど明確なサンプルデータと期待される結果を与える。 –

答えて

0

と同じで、私はouter applyをお勧めします:

SELECT Ticket_ID as ID, Created_Date as CreateDate, x.ConcurrentItems 
FROM CurrentView v OUTER APPLY 
    (SELECT COUNT(*) as ConcurrentItems 
     FROM CurrentView v2 
     WHERE v2.WorkItemType = 'Work Request' AND 
      v2.IncidentStartTime <= DATEADD(minute, -10, v.Created_Date) AND 
      v2.IncidentResolvedTime > DATEADD(minute, 10, Created_Date) 
    ) x; 
+0

これは、2つのタイプミスで機能しました。ありがとうゴードン。 –

0

これは、条件を持つすべてのカウントCreatedDateに表示されます:

select Created_Date, count(1) as ConcurrentItems from CurrentView 
where WorkItemType = 'Work Request' AND 
IncidentStartTime <= DATEADD(Minute, -10 CreateDate) AND 
IncidentResolvedTime > DATEADD(Minute, +10 CreateDate) group by Created_Date 

をしかし、これは特に、すべてのCreatedDateにのカウントが表示されます。

関連する問題