Ответ на задачу из поста: «Объединение таблицы с помощью SET»

На прошлой неделе мы рассмотрели проблему некорректной работы шага data step, где с помощью set объединялись две таблицы.

И так правильный ответ:

Дело в том, что при значение amount отсутствует в таблице B.

При написании set a b сначала считываются все данные из таблицы A, затем все данные из таблицы B, т.е. происходит конкатинация данных.

В нашем случае вектор PDV (Program Data Vector) будет выглядеть следущим образом, когда начнет читать данные из таблицы B:

до прохода data step:

_N_ _ERROR_ ID AMOUNT
3 0 . .

далее после считывания первых значений из таблицы B:

_N_ _ERROR_ ID AMOUNT
3 0 1001 .

после прохода всего шага:

_N_ _ERROR_ ID AMOUNT
3 0   1001      3

Следущий круг цыкла:

до прохода data step:

_N_ _ERROR_ ID AMOUNT
3 0  1001      3

После прохода считывания данных из таблицы B:

_N_ _ERROR_ ID AMOUNT
3 0  1003      3

Прошу обратить внимания, что на этом этапе значение amount не перетелось.

После прохода всего шага:
_N_ _ERROR_ ID AMOUNT
3 0  1003      3

Вот таким образом мы получили заполненные занчения amount даже у тех ID из таблицы B, которые не соответсвовали условию IF.

P.S.

Решить данную проблему можно просто добавив мустой столбец amount в таблицу B.
После этого все будет работать корректно.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.