我创建了一个CASE WHEN语句,如果患者在医院中的特定床型,则创建1,否则为0。由于用于创建标志的表格对于某些患者而言具有多个床位,因此如何使该标志对于患者就诊而言是独特的?例如,我有一名患者被标记为在其中一张床中,但他们也有0,因为在那张床之前他们在普通的床上。因此,如果我想排除1名患者,这个特定患者因为她的0和1而被包括在这两个计数中,因为她在访问后期被转移到其中一个床中。我希望国旗能够起作用,好像患者曾经是1,然后排除它们。
这是我用过的逻辑
if OBJECT_ID('tempdb..#LOC')is not null
drop table #LOC
SET NOCOUNT ON
SELECT DISTINCT LOC.EID
,CASE WHEN LOC.LOC_ROOM_CD_DESCR = 'PES' then '1'
WHEN LOC.LOC_ROOM_CD_DESCR like '%obs%' then '2'
ELSE '0' END as 'PESOBSFlag'
INTO #LOC
FROM [trackingtbl]LOC
with (nolock)
GROUP BY LOC.EID
,CASE WHEN LOC.LOC_ROOM_CD_DESCR = 'PES' then '1'
WHEN LOC.LOC_ROOM_CD_DESCR like '%obs%' then '2'
ELSE '0' END
答案 0 :(得分:0)
你可以分两个阶段完成: -
select eid, max(flag) as PESOBSFlag
from (
select loc.EID,
case
when loc.LOC_ROOM_CD_DESCR = 'PES' then '1'
when loc.LOC_ROOM_CD_DESCR like '%obs%' then '2'
else '0'
end as flag
from trackingtbl loc
) FirstPass
group by eid
内部查询只是将描述转换为您的号码,每个EID有多行。然后外部查询为每个EID拉出一行 - 并为每个EID选择最高的标志值。