首页 > 解决方案 > 如果它匹配值则返回行,除非它的唯一标识符匹配错误的值

问题描述

问题:

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

在此处输入图像描述

我想返回以下内容:

在此处输入图像描述

我只想返回项目类别组,其中该类别中的所有项目只能是已关闭的阶段。

我尝试过的: 据我所知,它只生成所有已关闭阶段的项目的列表,但我想排除其中任何项目未关闭的项目类别。

  SELECT Project_Category, Project, Stage, Reason
  FROM Table
  WHERE Project_Category IN (
    SELECT Project_Category
    FROM Table
    GROUP BY Project_Category
    HAVING COUNT(DISTINCT Project) > 1
  )
  AND Stage = 'Closed'
  AND Reason = 'no award'
  ORDER BY Project_Category

标签: sqltsql

解决方案


我只想返回项目类别组,其中该类别中的所有项目只能是已关闭的阶段。

您可以使用not exists

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.Project_Category = t.Project_Category and 
                        t2.Stage <> 'Closed'
                 )

推荐阅读