У меня есть набор данных (BASE) со следующей структурой: столбец с индексом для каждой записи, столбец с типом классификации, значением классификации и столбцом, который я хотел бы заполнить.
NAME |CLASSIFICATION|VALUE|STANDARD VALUE
FIDO |ALFABET |F |
ALFA |STANDARD |2 |
BETA |STANDARD |5 |
ETA |MIXED |B65 |
THETA|MIXED |A40 |
Не все записи имеют одинаковую классификацию, однако у меня есть дополнительная таблица (TRANSCODE) для преобразования различных методов классификации в стандартный (классификация):
ALFABET|STANDARD|MIXED
A |1 |A1
B |5 |A30
C |3 |A40
D |5 |A31
E |8 |B65
F |6 |C54
Моя цель - заполнить четвертый столбец с соответствующим значением я могу найти со второй таблицей. (записи со стандартной классификацией будут иметь два столбца с одинаковой классификацией). После этого мои данные должны выглядеть примерно так:
NAME |CLASSIFICATION|VALUE|STANDARD VALUE
FIDO |ALFABET |F |6
ALFA |STANDARD |2 |2
BETA |STANDARD |5 |5
ETA |MIXED |B65 |8
THETA|MIXED |A40 |3
Для этого я пытаюсь выполнить профессиональное c sql обновление с условием соединения, но, похоже, оно не работа
proc sql;
update BASE
left join TRASCODE
on BASE.VALUE= (
case
when BASE.CLASSIFCATION = 'ALFABET' then TRANSCODE.ALFABET
when BASE.CLASSIFICATION= 'STANDARD' then TRANSCODE.STANDARD
when BASE.CLASSIFICATION= 'MIXED then TRANSCODE.MIXED
end
)
set BASE.STANDARD_VALUE = TRANSCODE.STANDARD
;
quit;
Может кто-нибудь мне помочь? Большое спасибо