2016-12-06 5 views
0

SQL Serverでは、毎日新しいトランザクションデータがロードされるテーブルがあります。私は既存のテーブルに基づいて新しいテーブルを作成しようとしていますが、新しいテーブルでは、カラムの名前を変更し、新しい連結カラムを追加する必要があります。例えばテーブルをコピーして新しいカラムを追加

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にID列の名前を変更して、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の組み合わせであることに注意してください。基本的には、この新しいテーブルにデータをロードできるようにセットアップしようとしています。次に、ExistingTableをTRUNCATEして、翌日に新しいデータをロードできるようにします。 NewTableを最初から作成することはできますが、新しいデータを挿入するときに新しい列名に正しくマップされるかどうかはわかりません。どんな援助も高く評価されるだろう。

+0

ので、 、 あなたの質問は何ですか? – Blorgbeard

答えて

2

最初にテーブルを作成してから、それを使用してインポート\エクスポートユーティリティを使用します。 DB上で右クリックすると、タスクの下にあります。次に、ソースとデスティネーションを選択した後、独自の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

あなたがテーブルを既に作成していると仮定がNEWTABLEと呼ばれ、次のコマンドを使用してデータをコピーすることができます。

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 
関連する問題