Попытка применить логику для извлечения определенных строк на основе результатов в где - PullRequest
0 голосов
/ 19 февраля 2019

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

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

  • В ожидании
  • Ожидание
  • Актив

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

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

  • В ожидании
  • В ожидании
  • В ожидании

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

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

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

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

  • В ожидании
  • В ожидании
  • Актив

Вместо

  • Актив

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете использовать 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'
...