显示查询以根据条件合并同一数据库表中的行

时间:2019-02-25 11:28:17

标签: sql sql-server

我必须根据条件显示以下查询的结果,条件是显示具有状态的“模块”列,即,如果任何“模块测试”用例失败,则显示模块,状态(应用程序,失败),如果全部模块测试用例已通过,显示模块,状态(应用程序,通过)。

组查询如下:

Group Query

我为显示上述结果而编写的查询:

SELECT ModuleID,status 
FROM [dbo].[ReportCollectionSGI]
GROUP BY ModuleID, status
ORDER BY ModuleID, status

所需的输出显示查询:

enter image description here

预先感谢

2 个答案:

答案 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)也将通过