我使用下面提供的查詢作爲輸出獲得下表。CTE的條件語句計數
下面是我使用的查詢。
;WITH cte AS (
SELECT c.CaseID AS 'Case #',
m.ManufacturerName,
ou.OutcomeName
FROM Consumes con
INNER JOIN [Case] c
ON con.FKCaseID = c.CaseID
INNER JOIN Manufacturer m
ON m.ManufacturerID = con.FKManufacturerID
INNER JOIN Case_Outcome oc
ON oc.FKCaseID = c.CaseID
INNER JOIN OutCome ou
ON oc.FKOutcomeID = ou.OutcomeID
)
SELECT c.[Case #],
c.ManufacturerName,
STUFF((SELECT ','+OutcomeName
FROM cte
WHERE c.[Case #] = [Case #]
FOR XML PATH('')),1,1,'') as OutcomeName
FROM cte c
GROUP BY c.[Case #],c.ManufacturerNAme
我需要得到下面的輸出。
這裏事件的數量是情況#每個製造商計數。有沒有一種方法,我可以得到上面的輸出,而不使用每個輸出的CTE在哪裏條件?如果是這樣,請幫助一個例子。
我在回答中使用了下面的查詢,但其結果百分比始終爲0%或100%。也就是說,如果案件的結果完全相同,那麼這可以正常工作。
SELECT
m.ManufacturerName,
COUNT(c.CaseID) AS '# Events',
COUNT(CASE WHEN ou.OutcomeName = 'Death' THEN c.CaseID ELSE NULL END) /COUNT(c.CaseID)*100.0 AS 'Death Events',
COUNT(CASE WHEN ou.OutcomeName = 'Hospitalization' THEN c.CaseID ELSE NULL END)/COUNT(c.CaseID)*100.0 AS 'Hospitalization Events',
COUNT(CASE WHEN ou.OutcomeName = 'Life Threatening' THEN c.CaseID ELSE NULL END)/COUNT(c.CaseID)*100.0 AS 'Life Threatening Events',
COUNT(CASE WHEN ou.OutcomeName = 'Disability' THEN c.CaseID ELSE NULL END)/COUNT(c.CaseID)*100.0 AS 'Disability Events',
COUNT(CASE WHEN ou.OutcomeName = 'Congenital Anomaly' THEN c.CaseID ELSE NULL END)/COUNT(c.CaseID)*100.0 AS 'Congenital Anomaly Events',
COUNT(CASE WHEN ou.OutcomeName = 'Required Intervention' THEN c.CaseID ELSE NULL END)/COUNT(c.CaseID)*100.0 AS 'Required Intervention Events',
COUNT(CASE WHEN ou.OutcomeName = 'Other Serious' THEN c.CaseID ELSE NULL END)/COUNT(c.CaseID)*100.0 AS 'Other Serious Events'
FROM Consumes con
INNER JOIN [Case] c ON con.FKCaseID = c.CaseID
INNER JOIN Manufacturer m ON m.ManufacturerID = con.FKManufacturerID
INNER JOIN Case_Outcome oc ON oc.FKCaseID = c.CaseID
INNER JOIN OutCome ou ON oc.FKOutcomeID = ou.OutcomeID
GROUP BY m.ManufacturerName
但是,當結果不同時,它不會返回正確的答案。以下是每種情況下的計數。
但我的百分比結果集如下所示。
我不明白的問題。您的查詢中並沒有真正的「where」條件(除了關聯子句)。 –