Попытка применить логику для извлечения определенных строк на основе результатов в где

У меня есть запрос, который в идеальном мире вытащил бы, например...

Если Билл имеет 3 строки данных:

  • в ожидании
  • в ожидании
  • активный

Я пытаюсь применить логику, когда, если пациент имеет статус "Активный", я просто хочу, чтобы эта строка отображалась:

Но если у Сары есть 3 ряда:

  • в ожидании
  • в ожидании
  • в ожидании

Я хотел бы показать все 3 Pendings. Только если у пациента есть Актив, будет только Активное шоу

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

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

Прямо сейчас мои результаты тянут (для примера Билла выше)

  • в ожидании
  • в ожидании
  • активный

Вместо

  • активный

1 ответ

Вы могли бы использовать 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'
Другие вопросы по тегам