ОШИБКА: подзапрос оценивается более чем в одной строке. в SAS - PullRequest
0 голосов
/ 07 мая 2020

Я написал следующий код в SAS, чтобы выбрать запись с egrefid, отличным от 3, сгруппированных по subjid и cpevent, но мне сказали: «ОШИБКА: подзапрос оценивается более чем в одной строке».

case when (select count(egrefid) from INFMM.EDAT_EG004
           group by subjid, cpevent 
           having count(egrefid) ne 3) 
           and cpevent in ('DAY1',  'DAY29',  'DAY85') then 'triplicate' 
     else ' ' end as flag

Думаю, проблема в функции count (), но не знаю, как ее исправить.

Кто-нибудь знает, как решить эту проблему?

1 Ответ

0 голосов
/ 07 мая 2020

Случай, когда оценивается для каждой строки. Ваш подзапрос вернет все уникальные пары subjid и cpevent в вашей таблице INFMM.EDAT_EG004.

Я думаю, что соединение будет вашим лучшим выбором в этом случае

create table egrefid_counts as
select subjid, cpevent, count(egrefid) as egrefid_count
from INFMM.EDAT_EG004
where cpeven in ('DAY1',  'DAY29',  'DAY85')
group by subjid, cpevent
;

Затем вы присоедините это к своему таблица по subjid и cpevent

select a.*, case when b.egrefid_count = 3 then 'triplicate'
                 else ' ' end as flag
from <whatever your table is> as a
left join
egrefid_count as b
on a.subjid=b.subjid and a.cpevent = b.cpevent
...