【发布时间】:2014-01-30 14:09:08
【问题描述】:
我有这个查询(使用 SQL Server 2008):
SELECT
ISNULL(tt.strType,'Random'),
COUNT(DISTINCT t.intTestID) as Qt_Tests,
COUNT(CASE WHEN sd.intResult=4 THEN 1 ELSE NULL END) as Positives
FROM TB_Test t
LEFT JOIN TB_Sample s ON t.intTestID=s.intTestID
LEFT JOIN TB_Sample_Drug sd ON s.intSampleID=sd.intSampleID
LEFT JOIN TB_Employee e ON t.intEmployeeID=e.intEmployeeID
LEFT JOIN TB_Test_Type tt ON t.intTestTypeID=tt.intTestTypeID
WHERE
s.dtmCollection BETWEEN '2013-06-01 00:00' AND '2013-08-31 23:59'
AND f.intCompanyID = 91
GROUP BY
tt.strType
问题是每个样本在 sample_drug 上都有四个记录,代表在该样本上测试的药物。并且样本的结果可以同时从一到四种药物中呈阳性。 我需要在第三栏中显示的是样本是否为阳性,无论有多少药物。 而且我找不到这样做的方法,因为我需要 CASE WHEN 知道我想要所有的 Results = 4 但只是来自唯一的 intSampleID。
提前致谢!
【问题讨论】:
标签: sql-server unique case-when