我必须根据条件显示以下查询的结果,条件是显示具有状态的“模块”列,即,如果任何“模块测试”用例失败,则显示模块,状态(应用程序,失败),如果全部模块测试用例已通过,显示模块,状态(应用程序,通过)。
组查询如下:
我为显示上述结果而编写的查询:
SELECT ModuleID,status
FROM [dbo].[ReportCollectionSGI]
GROUP BY ModuleID, status
ORDER BY ModuleID, status
所需的输出显示查询:
预先感谢
答案 0 :(得分:3)
您需要一些条件逻辑:
SELECT ModuleID,
(CASE WHEN MIN(status) = MAX(status) AND
MIN(status) = 'Passed'
THEN 'Passed'
ELSE 'Failed'
END) as status
FROM [dbo].[ReportCollectionSGI]
GROUP BY ModuleID
ORDER BY ModuleID;
在这种特殊情况下,有两种状态,您也可以只使用MIN()
:
SELECT ModuleID,
MIN(status) as status
FROM [dbo].[ReportCollectionSGI]
GROUP BY ModuleID
ORDER BY ModuleID;
答案 1 :(得分:0)
您可以尝试以下
SELECT case when count(distinct status) = 1 and max(status)='Passed'
then 'Passed'
else 'Failed'
FROM [dbo].[ReportCollectionSGI] t
当所有status
通过时,唯一计数将为1,max(status
)也将通过