2014-01-22 4 views
1

У меня есть таблица, как показано ниже. Мой вопрос: как преобразовать столбцы в строки? Я использую Microsoft SQL ServerSQL-запрос для преобразования столбцов в строки

sip_RECno user1  user2 user3  user4  

    1   ram  ravi  sam  raj 

мне нужно оп, как показано ниже

user 
ram 
ravi 
sam 
raj 

, как это сделать? благодаря

+0

возможно дубликат [преобразования строк эффективно для столбцов в SQL Server 2008] (http://stackoverflow.com/questions/15745042/efficiently-convert-rows-to-columns-in -sql-server-2008) – Betlista

+2

Возможность «конвертировать столбцы в строки», являясь дубликатом «преобразования строк в столбцы», довольно мало. –

+0

действительно? PIVOT против UNPIVOT - http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx – Betlista

ответ

7

Ваши данные

DECLARE @TABLE TABLE 
(sip_RECno INT,user1 VARCHAR(10),user2 VARCHAR(10) 
,user3 VARCHAR(10),user4 VARCHAR(10))  

INSERT INTO @TABLE VALUES 
(1,'ram','ravi','sam','raj') 

Запрос

;WITH CTE 
AS 
    (
    SELECT * FROM (
    SELECT user1 ,user2 ,user3 , user4 FROM @TABLE) T 
    UNPIVOT (Value FOR N IN (user1 ,user2 ,user3 , user4))P 
) 
SELECT Value AS Users 
FROM CTE 

Результат Набор

╔═══════╗ 
║ Users ║ 
╠═══════╣ 
║ ram ║ 
║ ravi ║ 
║ sam ║ 
║ raj ║ 
╚═══════╝ 
+0

как сделать для динамических столбцов? – Happy

+0

@Happy это будет еще один длинный ответ, чтобы объяснить это, посмотрите здесь, прокрутите страницу вниз до середины этой страницы, чтобы увидеть, как динамические данные о сворачивании/неволе http://www.codeproject.com/Tips/516896/Calculate-aggregates- for-dynamic-columns-using-UNP –

5

Вы можете просто UNPIVOT()

select [user] from table_name unpivot 
     (
     [user] 
     for [userid] in ([user1], [user2], [user3], [user4]) 
    )unpvt 

Demo

+0

как сделать для динамических столбцов? – Happy

+0

с использованием динамического SQL и 'FOR XML PATH' –

+1

http://sqlfiddle.com/#!3/ad421/3 так оно работает с динамическим списком –

Смежные вопросы