首页 > 解决方案 > 尝试根据 where 中的结果应用逻辑来拉取某些行

问题描述

我有一个查询,在一个完美的世界里,会拉,例如......

如果 Bill 有 3 行数据:

我正在尝试应用逻辑,如果患者具有活动状态,我只想显示该行:活动

但如果 Sara 有 3 行:

我希望显示所有 3 个待处理。仅当患者有 Active 时才会显示 Active

select distinct
        MRN
      ,[RX Number]
      ,[Status]

where Status = case when d.Status = 'ACTIVE' then Status 
                    when d.Status <> 'ACTIVE' then Status  end

现在我的结果正在拉动(对于上面的比尔示例)

代替

标签: sql-server-2012logicwhere-clause

解决方案


你可以使用EXISTS

IF EXISTS (SELECT [Status] FROM [dbo].[Table1] WHERE [Status] = 'ACTIVE' AND [Patient] = 'Bill')
    SELECT DISTINCT MRN, [RX Number], [Status]
    FROM [dbo].[Table1]
    WHERE [Patient] = 'Bill'
        AND [Status] = 'ACTIVE'
ELSE
    SELECT DISTINCT MRN, [RX Number], [Status]
    FROM [dbo].[Table1]
    WHERE [Patient] = 'Bill'

推荐阅读