2016-12-06 4 views
0

В SQL Server у меня есть таблица, на которую загружаются новые данные транзакций каждый день. Я пытаюсь создать новую таблицу на основе существующей таблицы HOWEVER, в новой таблице мне нужно переименовать столбец И добавить новый конкатенированный столбец.Скопируйте таблицу, но с новыми столбцами

Например:

ExistingTable

ID  Quantity Name  Price ReceiptNumber Date 
    1243  3   Stickers 5  4444    2016-12-01 
    4923  1   Glue  3  8288    2016-12-02 
    1243  2   Stickers 5  1122    2016-12-04 

Отсюда, я хочу, чтобы переименовать столбец ID в ItemID, а затем создать дополнительный столбец, который представляет собой комбинацию ID и ReceiptNumber колонны

Новая_таблица

ItemID Quantity Name  Price ReceiptNumber Date   TransactionID 
    1243  3   Stickers 5  4444    2016-12-01 1243-4444 
    4923  1   Glue  3  8288    2016-12-02 4923-8288 
    1243  2   Stickers 5  1122    2016-12-04 1243-1122 

Обратите внимание, что TransactionID представляет собой комбинацию ItemID и ReceiptNumber. По сути, я пытаюсь настроить его так, чтобы я мог загружать данные в эту новую таблицу, а затем я буду TRUNCATE ExistingTable, чтобы новые данные могли быть загружены там на следующий день. Я могу создать NewTable с нуля, но я не уверен, правильно ли он будет сопоставляться с новыми именами столбцов при вставке новых данных. Любая помощь будет высоко оценена.

+0

Так , каков твой вопрос? – Blorgbeard

ответ

2

Сначала я создал таблицу, а затем после этого использовал утилиту импорта \ экспорта SQL Server. Когда вы нажимаете правой кнопкой мыши на БД, он находится под задачами. Затем, после выбора источника и адресата, вы можете написать собственный SQL.

INSERT INTO <destination table> 
(Columns) 
SELECT <Columns to copy plus custom column> 
FROM <source table> 

Затем убедитесь, что отображение правильное и имеет правильные требования к длине. После того, как все выберете конец, он должен загрузить все данные в таблицу.

Если вы предпочитаете, хотя вы можете просто создать задание для таблицы, но это будет точная копия другой таблицы, просто имя будет другим. Вам нужно будет изменить все имена столбцов и создать пользовательский столбец после копии.

0

Вы можете проверить, что с чем-то вроде этого:

if exists (select * from tempdb.sys.objects where name like '#newtable%') begin; drop table #newtable; end; 
if not exists (select * from tempdb.sys.objects where name like '#newtable%') 
begin 
create table #newtable (ItemID int,Quantity int, Name varchar(64), Price money, ReceiptNumber int, [Date] date, TransactionID varchar(32)) 
end; 

insert into #newtable (ItemId, Quantity, Name, Price, ReceiptNumber,[Date],TransactionID) 
select ID, Quantity, Name, Price, ReceiptNumber, [Date], TransactionID = convert(varchar(14),ItemId)+'-'+(convert(varchar(14),ReceiptNumber)) 
from ExistingTable; 
0

Предполагая, что вы уже создали таблицу с именем Новая_таблица, вы можете скопировать данные с помощью следующих команд:

SET IDENTITY_INSERT NewTable ON 

INSERT INTO NewTable (ItemID, Quantity, Name, Price, ReceiptNumber, Date, TransactionID) 
     SELECT ID, Quantity, Name, Price, ReceiptNumber, Date, CONVERT(VARCHAR(14), ItemId) + '-' + (CONVERT(VARCHAR(14), ReceiptNumber) 
     FROM ExistingTable; 

SET IDENTITY_INSERT NewTable OFF 

 Смежные вопросы

  • Нет связанных вопросов^_^