削除されていないテーブル内のすべてのケースをカウントしCaseStatusID
、別のテーブル内のaでグループ化するストアドプロシージャを作成しようとしていますが、これも削除されていないケースのみCaseStatusID
です。CaseStatusID
また、それに関連するケースがないもの(つまり、カウントが0)を返すようにします
これまでに試しました
Create Table #tCaseStatus (CaseStatusID int,CaseStatusDesc varchar(200) )
declare @NofCases int
declare @CaseStatusID int
declare @CaseStatusDesc varchar(200)
BEGIN
INSERT #tCaseStatus
Select CaseStatusID, CaseStatusDesc From dbo.CaseStatus Where IsDeleted = 0
Select @NofCases = Count(*) From #tCaseStatus
While (@NofCases > 0)
Begin
Select Top (1) @CaseStatusID = CaseStatusID, @CaseStatusDesc = CaseStatusDesc from #tCaseStatus
SELECT CaseStatusDesc, Count(CaseID) AS CountCases
FROM Cases inner join #tCaseStatus on Cases.CaseStatusID = #tCaseStatus.CaseStatusID
WHERE (IsDeleted = 0) AND Cases.CaseStatusID = @CaseStatusID
Group by #tCaseStatus.CaseStatusDesc
Set @NofCases = @NofCases - 1
Delete Top(1) from #tCaseStatus
End
END
と
これにより、正しいケースが返されますが、カウントが0のCaseStatusDescは除外されます。
SELECT CaseStatus.CaseStatusDesc, COUNT(Cases.CaseID) AS CaseCount
FROM Cases FULL OUTER JOIN
CaseStatus ON Cases.CaseStatusID = CaseStatus.CaseStatusID
WHERE (CaseStatus.IsDeleted = 0) AND
(Cases.IsDeleted = 0)
GROUP BY CaseStatus.CaseStatusDesc, CaseStatus.CaseStatusID
ORDER BY CaseStatus.CaseStatusID
と
これにより、削除されたものも含め、すべてのCaseStatusDescが返されます
SELECT CaseStatus.CaseStatusDesc, COUNT(CASE
WHEN CaseStatus.IsDeleted = 0 THEN 'ok'
WHEN Cases.IsDeleted = 0 THEN 'ok'
Else null
END) AS [Case]
FROM Cases FULL OUTER JOIN CaseStatus ON Cases.CaseStatusID = CaseStatus.CaseStatusID
GROUP BY CaseStatus.CaseStatusDesc, CaseStatus.CaseStatusID
Order By CaseStatus.CaseStatusID asc
しかし、私は望ましい結果を得ることができないようです