Попытка применить логику для извлечения определенных строк на основе результатов в где
У меня есть запрос, который в идеальном мире вытащил бы, например...
Если Билл имеет 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'