我有以下查询,我需要修改它只计算Unit_Serial_No列中唯一值的总和(关于计数我可以用DISTINCT轻松做到这一点),我只是不知道如何处理和。提前谢谢!
SELECT COUNT(Test_Result) as 'Total'
,SUM(CASE WHEN Test_Result='Pass' THEN 1 END) AS 'Passed'
,SUM(CASE WHEN Test_Result='Fail' THEN 1 END) AS 'Failed'
FROM [Optima_Test_Results].[dbo].[Optima PreChamber Test]
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, Created_Date)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
解决方案,几乎没有任何调整,归功于Madhivanan:
SELECT COUNT(DISTINCT Unit_Serial_No) as 'Total'
,COUNT(DISTINCT CASE WHEN Test_Result='Pass' THEN Unit_Serial_No END) AS 'Passed'
,COUNT(DISTINCT CASE WHEN Test_Result='Fail' THEN Unit_Serial_No END) AS 'Failed'
FROM [Optima_Test_Results].[dbo].[Optima PreChamber Test]
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, Created_Date)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
答案 0 :(得分:1)
试试这个
CSS
答案 1 :(得分:0)
如果您对同一测试没有不同的结果,此查询可以提供帮助。否则他们将被计算两次:一次为'通过',一次为'失败':
;WITH uniquevalues AS
(
SELECT DISTINCT Unit_Serial_No, Test_Result
FROM [Optima_Test_Results].[dbo].[Optima PreChamber Test]
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, Created_Date)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
)
SELECT COUNT(Test_Result) as 'Total'
,SUM(CASE WHEN Test_Result='Pass' THEN 1 END) AS 'Passed'
,SUM(CASE WHEN Test_Result='Fail' THEN 1 END) AS 'Failed'
FROM uniquevalues