У меня есть набор результатов для запроса, который может возвращать результаты, которые выглядят следующим образом:Удалить строки на основе SQL значения столбца
VISIT ID | MRN | ORDER NUMBER | ORDER STATUS | STATUS DATETIME
12345678 | 123 | 987654321 | ACITVE | 2013-06-01 11:00:01.000
12345678 | 123 | 987654321 | DISCONTINUE | 2013-06-01 11:05:00.000
12345678 | 123 | 987654320 | ACTIVE | 2013-06-01 11:10:00.000
12345678 | 123 | 987654320 | IN PROGRESS | 2013-06-01 11:15:00.000
12345678 | 123 | 987654320 | COMPLETE | 2013-06-01 11:25:00.000
То, что я хочу сделать, это избавиться от всех порядковых номеров, которые имеют статус заказа, как Прекратите и получить следующий вывод:
VISIT ID | MRN | ORDER NUMBER | ORDER STATUS | STATUS DATETIME
12345678 | 123 | 987654320 | ACTIVE | 2013-06-01 11:10:00.000
12345678 | 123 | 987654320 | IN PROGRESS | 2013-06-01 11:15:00.000
12345678 | 123 | 987654320 | COMPLETE | 2013-06-01 11:25:00.000
единственными способами я могу думать делать это, кажется, слишком сложным. Вот мой код:
DECLARE @SD DATETIME
DECLARE @ED DATETIME
SET @SD = '2013-06-01';
SET @ED = '2013-06-30';
-- COLUMN SELECTION
SELECT PV.PtNo_Num AS 'VISIT ID'
, PV.Med_Rec_No AS 'MRN'
, PV.Adm_Date AS 'ADMIT'
, PV.Dsch_Date AS 'DISC'
, PV.Days_Stay AS 'LOS'
, PV.pt_type AS 'PT TYPE'
, PV.hosp_svc AS 'HOSP SVC'
, SO.ord_no AS 'ORDER NUMBER'
, SO.ent_dtime AS 'ORDER ENTRY TIME'
, SO.svc_desc AS 'ORDER DESCRIPTION'
, OSM.ord_sts AS 'ORDER STATUS'
, SOS.prcs_dtime AS 'ORDER STATUS TIME'
-- DB(S) USED
FROM smsdss.BMH_PLM_PtAcct_V PV
JOIN smsmir.sr_ord SO
ON PV.PtNo_Num = SO.episode_no
JOIN smsmir.sr_ord_sts_hist SOS
ON SO.ord_no = SOS.ord_no
JOIN smsmir.ord_sts_modf_mstr OSM
ON SOS.hist_sts = OSM.ord_sts_modf_cd
-- FILTER(S)
WHERE Adm_Date BETWEEN @SD AND @ED
--AND OSM.ord_sts IN ( <--COMMENTED OUT
--'ACTIVE', <--COMMENTED OUT
--'IN PROGRESS', <--COMMENTED OUT
--'COMPLETE' <--COMMENTED OUT
--) <--COMMENTED OUT
AND pv.drg_no IN (067,068,069)
AND SO.svc_cd IN (SVC CODES LIST)
ORDER BY PV.PtNo_Num, SO.ord_no, SOS.prcs_dtime
Любые предложения приветствуются.
Спасибо,
ли вы делаете выбор, удаление или обновление, почему вы не можете просто WHERE OrderStatus <> 'DISCONTINUE'? – Volvox
Привет @Volvox, когда я это сделал, «ORDER NUMBER», где он все еще находился в «ACTIVE», все еще появился. Если в любой момент «ORDER NUMBER» попадает в состояние «DISCONTINUE», я не хочу показывать какую-либо его историю. Причина в том, что я присоединяюсь к таблице, в которой хранится история заказа, поэтому каждый номер заказа является уникальным для пациента, а также его статус –
Ahh, я думаю, я вижу, к чему вы клоните. WHERE OrderNumber NOT IN (SELECT OrderNumber FROM x WHERE OrderStatus = 'Discontinue') – Volvox