#merge #sas #row
Вопрос:
У меня есть несколько таблиц , например Table1
Table2
Table3
, Table4
в них одни и те же столбцы в одном и том же порядке. Я хочу связать их вертикально, я понятия не имею, как это сделать. Я попробовал этот код:
PROC SQL; create table Table_final AS ( select * from Table1 union all select * Table2 union all select * Table3 union all select * Table4 ); QUIT;
Но это не работает
Комментарии:
1. По какой причине вы не можете использовать шаг данных SAS? Это делается гораздо проще…
2. Я делаю запрос к базе данных. Могу ли я использовать код, отличный от
PROC SQL
3. Конечно. Покажите более подробную информацию о том, как будет выглядеть ваш код, с именами библиотек/подключитесь к/и т.д. Там.
4. Как это не работает? Вы получали сообщения об ошибках? опубликуйте журнал. Неправильные результаты? Объясните, как это неправильно.
5. Спасибо всем; Я решаю проблему другим способом (самым длинным способом), связывая таблицы по две; то есть я связал две первые таблицы, затем я привязал третью к созданной таблице и так далее.
Ответ №1:
Рад, что вы решили проблему самостоятельно альтернативным способом. Однако вы допустили несколько синтаксических ошибок, проигнорировав FROM
инструкцию в своем запросе.
Вот ваш обновленный код:
PROC SQL; create table Table_final AS ( select * from Table1 union all select * from Table2 union all select * from Table3 union all select * from Table4 ); QUIT;
Это сработало для меня.
Ответ №2:
Шаги SQL или обработки данных не очень эффективны, поскольку они обрабатывают данные строка за строкой. Вместо этого самый быстрый метод-объединить их по одному, используя PROC APPEND. Это копирует данные блок за блоком, а не по одной строке за раз. Обратите внимание, что Базовая таблица не обязательно должна существовать до этой процедуры.
proc append base=table_final data=data1; run; proc append base=table_final data=data2; run; proc append base=table_final data=data3; run;