尝试应用逻辑以根据where中的结果提取某些行

时间:2019-02-18 21:20:26

标签: sql-server-2012 logic where clause

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

如果Bill有3行数据:

  • 待处理
  • 待处理
  • 活动

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

但是如果Sara有3行:

  • 待处理
  • 待处理
  • 待处理

我希望所有3个待处理项都显示出来。只有患者有活动状态,活动状态才会显示

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

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

现在,我的结果正在提升(对于上面的Bill例子)

  • 待处理
  • 待处理
  • 活动

代替

  • 活动

1 个答案:

答案 0 :(得分:0)

您可以使用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'