2013-01-24 22 views
5

Mam tabeli o nazwie Table1Utwórz tabelę z rzędami innej tabeli wraz z jego właściwościami

 

Column Name  Data type Max length Precision Scale is_nullable Primary Key 
    Price  float   8   53   0  1    0 
    Name   varchar  180   0   0  1    0 
    Id_no  int   4   10   0  1    1 
    DOB   date   3   10   0  1    0 

muszę utworzyć inną tabelę o nazwie Table2 gdzie wiersze nazwa kolumny z tabeli 1 (wraz z właściwościami, takimi jak Typ danych, maksymalna długość itp) powinno być moje kolumny innej tabeli, jak

 
Table 2 
Price Name Id_No DOB 

(należy pamiętać, że tworzenie kwerendy tabela powinna również uwzględniać właściwości)

+1

chcesz utworzyć kolejną tabelę lub po prostu wybrać dane przestawne? – WKordos

+0

Czy rozwiązanie musi być wyłącznie w języku SQL? Jeśli jest to backend dla skryptu PHP/Python/Ruby/Anything, byłoby całkiem proste robienie tego, co chcesz w tym języku. – Dan

+0

@WKordos Chcę utworzyć nową tabelę (Tabela 2) .. gdzie moje wiersze pierwszej kolumny z tabeli 1 powinny być moimi kolumnami tabeli 2 .. Ale typów danych określonych w innych kolumnach tabeli 1. – Yoshi

Odpowiedz

0

Można utworzyć kopię tabeli z select into:

select * 
into NewTable 
from OldTable 
+0

Wierzę, że OP chce mieć możliwość utworzenia tabeli, której pola są zdefiniowane przez wiersze OldTable. Chce przetransponować tabelę, a nie kopiować istniejącą strukturę. – Dan

+0

@Andomar Nie chcę tworzyć kopii. Chcę utworzyć nowy stół, w którym wiersze tabeli 1 powinny być kolumnami mojego stołu 2 – Yoshi

+0

@DanSullivan Dokładnie! ale po prostu jej nie transponować ... Potrzebuję tylko moich wartości pola [nazwa kolumny] do moich kolumn w mojej tabeli 2. Ale moje inne wartości w polu kolumny, takie jak Typ danych Maksymalna długość, powinny być moimi właściwościami – Yoshi

0
create table table2 
as 
select * form table1; 
+0

Mimo że jest to standardowy SQL, SQL Server nie obsługuje tej składni. Zdecydowali się na zaimplementowanie własnej składni. –

0

można dynamicznie utworzyć instrukcję SQL, a następnie uruchomić tę komendę.

DECLARE @dsql nvarchar(max) = N'' 

SELECT @dsql += QUOTENAME([Column Name]) + ' ' + 
     [Data type] + 
     + CASE WHEN [Data type] = 'varchar' 
       THEN '(' + CAST([Max length] AS nvarchar(4)) + ')' ELSE '' END + ','   
FROM Table1 

SELECT @dsql = 'CREATE TABLE Table2 (' + LEFT(@dsql, LEN(@dsql) - 1) + ')' 
EXEC sp_executesql @dsql 
Powiązane problemy