2010-10-01 27 views
2

我有一個+15000條目表中的列 - 我想複製整個列,同時保留它的值並以不同的名稱命名。我正在使用Microsoft SQL Server Management Studio。如何使用Microsoft SQL Server複製整個列的值?

我該怎麼做?

謝謝。

+4

想要重命名列或想要結束兩列嗎? – 2010-10-01 18:56:16

+0

對不起,應該更清楚。 想要結束兩列不同的名稱相同的值。 – Alex 2010-10-01 19:02:02

+2

@亞歷克斯:我必須知道;爲什麼你會想要兩個不同的列具有相同的值? – 2010-10-01 19:04:54

回答

2

根據您對原始問題的評論,我瞭解到您試圖在ColumnA中保留25個不同的值,同時將新的ColumnB轉換爲保存10個不同的值。我認爲你可以做下面的代碼。修改我的數據類型以符合您的情況。

declare @ColumnAConverter table (
    ColumnA nvarchar(max), 
    ColumnB nvarchar(max) 
) 

insert into @ColumnAConverter 
    (ColumnA, ColumnB) 
    select 'A', '1' 
    union all 
    select 'B', '1' 
    union all 
    select 'C', '2' 
    /* ...continue for all 25 values in the original ColumnA */ 

update yt 
    set ColumnB = c.ColumnB 
    from YourTable yt 
     inner join @ColumnAConverter c 
      on yt.ColumnA = c.ColumnA 
+0

非常感謝你 - 喬 - 我一定會給這個鏡頭:) – Alex 2010-10-01 19:53:17

4

創建一個新的列,然後

UPDATE YourTable 
SET NewColumn = OldColumn 
+0

如果您發佈代碼或XML,請**在文本編輯器中高亮顯示這些行,然後單擊編輯器工具欄上的「代碼」按鈕(101 010)以精確地格式化並語法突出顯示它! – 2010-10-01 19:19:20

3
ALTER TABLE Boo 
Add [NewColumnName] [datetype] 
GO 

Update Boo 
Set NewColumnName = OldColumn 
GO 
0
INSERT into tbl (colname,fld1,fld2,fld3,fld4) 
SELECT 'NEWNAME' as colname, fld1,fld2,fld3,fld4 
FROM tbl where uniqid=[SOMEVAL] 
+0

我想你可能誤解了這個問題;這不需要插入新記錄。 – LittleBobbyTables 2010-10-01 19:05:23

+0

如果您發佈代碼或XML,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼」按鈕(101 010)以更好地格式化和語法突出顯示它! – 2010-10-01 19:21:18

2

爲什麼不計算列?

ALTER TABLE Foo ADD NewColumnName AS OldColumnName 

這阿洛斯適用的,你想改變一個數字,文本例如

ALTER TABLE Foo ADD NewColumnName AS RIGHT('ABC000000' + CAST(OldColumnName AS varchar(10)), 10) 

1  ABC0000001 
2  ABC0000002 
3  ABC0000003 
4  ABC0000004 
5  ABC0000005 
0
BEGIN TRANSACTION 

    ALTER TABLE myTable 
     Add newcol NVARCHAR(8) 
    GO 

    UPDATE myTable 
     Set newcol = oldcol 
    GO 

COMMIT TRANSACTION 

更換NVARCHAR(8),不管你目前的列數據類型。

相關問題