我正在創建一個存儲過程,它將根據輸入的時間返回開放式案例的結果 - 我想返回案例的計數,但是基於不同的辦公室。編輯我的代碼後,我也會重新說明我的問題不同 - 哪種方式最好是返回一個計數而不是我現在得到的實際結果。UNION在存儲過程COUNT
以下是我的存儲過程:
SELECT C.CaseId
FROM [Case] C
WHERE C.DateCreated <= @BeginDate
AND C.CaseId NOT IN (SELECT CaseId FROM CaseStatusChange CSC WHERE CSC.DateClosed < @BeginDate)
UNION
-- Also need the cases that reopened and are currently open
SELECT ReOpened.CaseId FROM
(
SELECT C.CaseId, MAX(CSC.DateReopened) AS DateReOpened
FROM [Case] C
INNER JOIN [CaseStatusChange] CSC ON C.CaseId = CSC.CaseId
WHERE CSC.DateReopened <= @BeginDate
GROUP BY C.CaseId
) ReOpened
WHERE ReOpened.CaseId NOT IN
(
SELECT CaseId FROM CaseStatusChange
WHERE CaseId = ReOpened.CaseId AND
CaseStatusChange.DateClosed BETWEEN ReOpened.DateReopened AND @BeginDate
)
謝謝!再次,你是最好的。 – Masriyah 2011-06-09 15:26:42
我很抱歉,我知道我很痛苦,但我也想爲OfficeI添加一個參數,這樣我就可以得到每個辦公室有多少個開放案例。我會將它們添加到內部選擇語句嗎? – Masriyah 2011-06-09 15:41:26
你需要在這種情況下使用GROUP BY,如SELECT COUNT(C.CaseId)AS CaseCount,OfficeID ... GROUP BY OfficeID ..所以,你的結果將成對的OfficeId和計數。 – Akhil 2011-06-09 16:27:27