Я начал со списка пациентов с несколькими кодами (по несколько раз в год), и мне нужно разделить пациентов на группы, основываясь на том, есть ли у них код или комбинация кодов, а те, которые не соответствуют требованиям, исключаются из списка. список. Я уже создал флаги (0,1) для каждого набора кодов. Но проблема в том, что пациент может быть квалифицирован или дисквалифицирован в другом ряду. То, что я хотел бы, - это один ряд на пациента, который затем я могу определить соответствующую группу на пациента. Ниже приведены два способа, которые я пробовал, но я не могу понять, как свернуть по идентификатору и / или новому столбцу.
1-й код, который я пробовал:
SELECT
a.*
into file_2
from (select code,ID, 'HL2' as grp_1
from file_1
where (code like '%I60.%' or code like '%I61.%')
and (code not like '%I20.%' and code not like '%I21.%'
and code not like '%I63.%' and code not like '%I64.%'
and code not like '%I70.%') a
2-й Код, который я пробовал:
,(case when (HL2='1' and dm='0' and ht='0') then 1 else 0 end) as exclude
ЕСТЬ
ID CV CA HT DM HL PA HL1 HL2 exclude
1003 0 0 0 0 1 0 0 1 1
1096 0 0 0 0 1 0 0 1 1
1096 0 0 0 1 0 0 0 0 0
1096 0 0 1 0 0 0 0 0 0
1196 0 0 0 0 0 1 0 0 0
1196 0 0 1 0 0 0 0 0 0
1196 1 0 0 0 0 0 0 0 0
1196 0 0 0 0 1 0 0 1 1
ХОЧУ
ID CV CA HT DM HL PA HL1 HL2 exclude
1003 0 0 0 0 1 0 0 1 1
1096 0 0 1 1 1 0 0 1 0
1196 1 0 1 0 1 1 0 1 0