2013-10-10 14 views
5

Używam SQL Server 2012 dla mojej bazy danych. Teraz mam jedną tabelę z następującymi szczegółami.Wyświetl dwie wartości kolumn jako dwa wiersze w SQL

ID    COLUMN1    COLUMN2 
1     A     B 

Teraz chcę wyników takich jak to.

ID     Values 
1      A 
1      B 

Czy ktoś może mi zasugerować? Wiem, że mogę zrobić za pomocą przestawienia lub rozpiąć. ale nie wiem jak to zrobić? i czy jest inny sposób na zrobienie tego?

Pomóż mi napisać zapytanie o to samo.

Z góry dziękuję.

Odpowiedz

4

Można użyć UNPIVOT aby uzyskać ostateczny wynik:

select id, value 
from yourtable 
unpivot 
(
    value 
    for col in (COLUMN1, COLUMN2) 
) u; 

Zobacz SQL Fiddle with Demo

Albo można użyć CROSS APPLY, aby uzyskać to:

select id, value 
from yourtable 
cross apply 
(
    values ('COLUMN1', COLUMN1), ('COLUMN2', COLUMN2) 
) c (col, value) 

Zobacz SQL Fiddle with Demo

3
select id, col1 as value 
from your_table 
union all 
select id, col2 as value 
from your_table