2014-01-22 4 views
1

мне нужно преобразовать столбцы в строки в MS Sql.so я попытался ниже кодКак преобразовать столбцы грести SQL

DECLARE @colsUnpivot AS NVARCHAR(MAX), 
    @query AS NVARCHAR(MAX) 

select @colsUnpivot = stuff((select ','+quotename(C.name) 
     from sys.columns as C 
     where C.object_id = object_id('tbl_login_settings') 

     for xml path('')), 1, 1, '') 

set @query 
    = 'select value 
    from tbl_login_settings 
    unpivot 
    (
     value 
     for year in ('+ @colsunpivot +') 
    ) lab_name' 

exec(@query) 

его работает нормально, но проблема заключается в ее преобразовании все столбцы (все строки значения) в ряды ,

мне нужны конкретные столбцы (строки значения) в строки

например

sno/ name/ visible// column name 
1/sam/show 
2/ram/hide // i need to convert this rows like below 
3/mick/show 

values// column name 
2 
ram 
hide 

ответ

0

Попробуйте

DECLARE @colsUnpivot AS NVARCHAR(MAX), 
    @query AS NVARCHAR(MAX) 

select @colsUnpivot = stuff((select ','+quotename(C.name) 
     from sys.columns as C 
     where C.object_id = object_id('tbl_login_settings') 

     for xml path('')), 1, 1, '') 

set @query 
    = 'select value 
    from tbl_login_settings where sno = 2 
    unpivot 
    (
     value 
     for year in ('+ @colsunpivot +') 
    ) lab_name' 

exec(@query) 
+0

ошибка "Неправильный синтаксис около ключевого слова 'UNPIVOT'. " – Happy

+0

Можете ли вы разместите свой код в sqlfiddle –

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