Member 14114251 Ответов: 1

Sql скрипт для выбора и вставки данных из одной таблицы в другую таблицу


Я изменил таблицу, чтобы добавить один столбец на sql server 2017, теперь я хочу перенести данные из старой таблицы в новую моя задача теперь я не могу сопоставить столбцы в обеих таблицах в моем скрипте, как в приведенном ниже скрипте, который я использую:
когда я запускаю его, значения этого столбца outst60 перемещаются в новый add column outst80 в новой таблице, что я хочу, чтобы новый столбец в новой таблице должен быть нулевым, а столбцы должны быть сопоставлены друг с другом в приведенном ниже скрипте.
может кто-нибудь мне помочь, пожалуйста.

Что я уже пробовал:

ниже приведено то, что у меня есть treid
SERT INTO [dbo].[irDataWIP]
           ([yyyy]
           ,[mm]
           ,[totaloutstanding]
           ,[outst30]
           ,[outst60]
           ,[outst80]
           ,[outst90]
           ,[outst120]
           ,[outst150]
           ,[outst180]
           ,[outst210]
           ,[outst2100])
     SELECT TOP (1000) [yyyy]
      ,[mm]
      ,[cnt]
      ,[totaloutstanding]
      ,[outst30]
      ,[outst60]
      ,[outst90]
      ,[outst120]
      ,[outst150]
      ,[outst180]
      ,[outst210]
      ,[outst2100]
  FROM [LiveTest].[dbo].[irDataWIP_Prod19062019]
GO

0x01AA

Вы пропустили колонку [cnt] в списке INSERT или, другими словами, просто сравните два списка fieldname, и вы должны легко увидеть проблему.

1 Ответов

Рейтинг:
12

Maciej Los

Пожалуйста, прочтите это: SQL Server: SELECT INTO оператор[^]

Цитата:
Если вы обнаружите, что хотите переименовать некоторые столбцы в новой таблице, а не использовать исходные имена, вы можете использовать псевдонимы имен столбцов в инструкции SELECT INTO.

Например:

SELECT employee_id AS contact_id, last_name, first_name
INTO contacts
FROM employees
WHERE employee_id < 1000;


В этом SELECT INTO например, мы не хотим, чтобы первый столбец в новой таблице контактов назывался employee_id. Было бы более разумно переименовать первый столбец в таблице контактов в contact_id. Это делается путем сглаживания столбца employee_id следующим образом:

employee_id AS contact_id


SELECT TOP(100) [yyyy]
           ,[mm]
           , NULL AS [cnt]
           ,[totaloutstanding]
           ,[outst30]
           ,[outst60]
           ,NULL AS [outst80]
           ,[outst90]
           ,[outst120]
           ,[outst150]
           ,[outst180]
           ,[outst210]
           ,[outst2100]
 INTO [dbo].[irDataWIP]
 FROM [LiveTest].[dbo].[irDataWIP_Prod19062019]


Member 14114251

Спасибо за ваш ответ, однако моя проблема, которая у меня есть, заключается в следующей ошибке
Список выбора для инструкции Insert содержит меньшее число элементов, чем список вставки. Количество выбранных значений должно совпадать с количеством вставляемых столбцов.

Maciej Los

Количество столбцов должно быть одинаковым. Итак, вы должны изменить свою жизнь. SELECT заявление соответственно.

Member 14114251

Спасибо, да, я изменился, теперь все в порядке.

Maciej Los

Всегда пожалуйста. В то же время я должен был улучшить свой ответ.
Ваше здоровье!
Мацей