Как продублировать весь столбец со значениями с помощью Microsoft SQL Server? - PullRequest
2 голосов
/ 01 октября 2010

У меня есть столбец в таблице с +15000 записей - я хочу продублировать весь этот столбец, сохранив его значения и назвав его по-другому. Я использую Microsoft SQL Server Management Studio.

Как мне это сделать?

Спасибо.

Ответы [ 6 ]

4 голосов
/ 01 октября 2010

Создайте новый столбец, а затем

UPDATE YourTable
SET NewColumn = OldColumn
3 голосов
/ 01 октября 2010
ALTER TABLE Boo
Add [NewColumnName] [datetype]
GO

Update Boo
Set NewColumnName = OldColumn
GO
2 голосов
/ 01 октября 2010

Исходя из ваших комментариев к исходному вопросу, я понимаю, что вы пытаетесь сохранить 25 различных значений в ColumnA при преобразовании нового 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
2 голосов
/ 01 октября 2010

Почему не вычисляемый столбец?

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 голосов
/ 01 октября 2010
BEGIN TRANSACTION

   ALTER TABLE myTable
       Add newcol NVARCHAR(8)
   GO 

   UPDATE myTable
       Set newcol = oldcol
   GO 

COMMIT TRANSACTION

Замените NVARCHAR (8) на текущий тип данных столбцов.

0 голосов
/ 01 октября 2010
INSERT into tbl (colname,fld1,fld2,fld3,fld4)  
 SELECT 'NEWNAME' as colname, fld1,fld2,fld3,fld4  
 FROM tbl where uniqid=[SOMEVAL]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...