如何按SQL中的某个列进行分组

时间:2017-08-30 17:16:45

标签: sql-server grouping

我有一个看起来像这样的SQL表

enter image description here

我想按系统进行分组,以显示所有任务是否完成(如果系统的所有状态都已完成,则完成其他未完成)。

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以将MAX()GROUP BY一起使用。假设这些是您的状态列的唯一两个可用值。

SELECT Name, System, MAX(Status) Status
FROM Table
GROUP BY Name, System

答案 1 :(得分:0)

选择Distinct Name / System,然后使用子查询作为状态。

子查询可以是CASE WHEN EXISTS()结构。

答案 2 :(得分:0)

SELECT DISTINCT
    Name,
    System, 
    CASE 
        WHEN (SELECT NULL AS [Empty] FROM Table AS t_inner WHERE t_inner.Status = 'Not Done' AND t_inner.System = t_outter.System AND t_inner.Name = t_outter.Name) EXISTS 
        THEN 'Not Done'
        ELSE 'Done'
    END
FROM
    Table AS t_outter