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

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

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

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

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






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

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

_N__ERROR_IDAMOUNT
30..

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

_N__ERROR_IDAMOUNT
301001.

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

_N__ERROR_IDAMOUNT
30  1001     3

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

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

_N__ERROR_IDAMOUNT
30 1001     3

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

_N__ERROR_IDAMOUNT
30 1003     3

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

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

_N__ERROR_IDAMOUNT
30 1003     3


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

P.S.

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

Ярлыки: ,