У меня есть следующая таблица:
COMPANY_NAME | GROUP | COUNTRY | STATUS
COM1 | 1 | DE | DELETED
COM2 | 1 | DE | REMAINING
COM3 | 1 | UK | DELETED
COM4 | 2 | ES | DELETED
COM5 | 2 | FR | DELETED
COM6 | 3 | RO | DELETED
COM7 | 3 | BG | DELETED
COM8 | 3 | ES | REMAINING
COM9 | 3 | ES | DELETED
Мне нужно получить:
COMPANY_NAME | GROUP | COUNTRY | STATUS
COM3 | 1 | UK | DELETED
COM4 | 2 | ES | DELETED
COM5 | 2 | FR | DELETED
COM6 | 3 | RO | DELETED
COM7 | 3 | BG | DELETED
Итак, мне нужны все записи, где статус УДАЛЕН, а внутри каждой ГРУППЫ нетCOMPANY_NAME со статусом REMAINING для той же страны, что и статус DELETED.Я могу использовать PROC SQL или шаг DATA.
До сих пор я пробовал:
PROC SQL;
CREATE TABLE WORK.OUTPUT AS
SELECT *
FROM WORK.INPUT
WHERE STATUS = 'DELETED' AND COUNTRY NOT IN (SELECT COUNTRY FROM WORK.INPUT WHERE STATUS = 'REMAINING');
QUIT;
, но это, очевидно, исключает все ОСТАЮЩИЕСЯ страны из всех ГРУПП.
Я также попробовал шаг данных:
DATA WORK.OUTPUT;
SET WORK.INPUT;
BY GROUP COUNTRY;
IF NOT (STATUS = 'DELETED' AND COUNTRY NOT IN (COUNTRY WHERE STATUS = 'REMAINING')) THEN DELETE;
RUN;
, но синтаксис неверен, потому что я не знаю, как правильно написать это.