2013-04-17 83 views
0

我從Excel電子表格導入數據到表格中,現在我需要轉換這些數據,然後將其插入到另一個表格中。兩個表格中的所有內容都將相同,只是某些VARCHAR將更改爲BIT類型,而新表格將具有ID字段。從現有表格插入添加了ID的新表格

SELECT Column1, Column2, CASE Column3 WHEN 'Y' THEN 1 ELSE 0 END AS 'Column3' 
FROM MyTable 

我需要做的是採取的所有數據,並將其插入到新表,將在原表所有內容的頂部有一個ID列。我遇到的麻煩是插入語句,我知道我可以INSERT INTO然後運行一個選擇語句,它會插入它,但我無法添加ID字段應自動遞增。

回答

1

如果您將在晚些時候使用新表格恩要與一個ID列創建:

create table NewTable (
    NewTableId int not null identity(1, 1), 
    <your columns here> 
) 

然後插入:

insert into NewTableId(<your columns here>) 
    select <your columns here> 
    from StagingTable 

這也讓你有機會來優化類型列。

如果你只是想在第一次插入一個遞增的數字:

select row_number() over (order by (select NULL)) as NewTableId, 
     t.* 
into NewTable 
from t 

我發現,在order by使用常量表達式的運行速度比使用列名快。性能優勢絕對是經驗性的,而不是由Microsoft保證的。但是,它在實踐中爲我工作。

+0

所有基本上都說同樣的事情,你你說得透徹徹底,謝謝。 –

1

你可以使用:

ROW_NUMBER() OVER(ORDER BY Column1)

select

1

試試這個....

Insert into YourTableName(Column1,Column2,Column3) (SELECT Column1, Column2, CASE Column3 WHEN 'Y' THEN 1 ELSE 0 END AS 'Column3' 
    FROM MyTable) 

設置你的ID字段來標識字段