2016-05-20 7 views
1

У меня есть следующие данные в таблице моей категории.Преобразование данных табличного формата в формат списка в SQL Server

Когда я помещаю select * из категории, я получаю данные следующим образом. Эта таблица имеет более 10 колонок

CategoryId CategoryName c3 c4 .....c10 
1   aaa 
2   bbb 
3   ccc 
... 
... 

Я хочу отображать данные следующим образом. Я не знаю, как подготовить SQL для этого.

CategoryId 1 
CategoryName aaa 
C3 
... 
... 
C10 
CategoryId 2 
CategoryName bbb 
C3 
... 
... 
C10 
CategoryId 3 
CategoryName ccc 
C3 
... 
... 
C10 

... 

Пожалуйста, предложите мне любые идеи.

+1

Название "табличный формат" и "формат список" не имеет никакого значения для баз данных. То, что вы описываете, обменивая столбцы и строки, называется поворотным. По крайней мере, один из способов сделать это - использовать команды 'PIVOT' и' UNPIVOT' –

+0

У меня есть более 10 столбцов. Я хочу преобразовать эти строки с двумя столбцами. Я не уверен, как это сделать для этого – StackUser

ответ

1

Вы можете достичь его, используя Cross Apply как это -

DECLARE @OutItem TABLE 
(
    CategoryId INT, 
    CategoryName varchar(10), 
    c3 varchar(10) 
) 

INSERT INTO @OutItem 
    VALUES (1,'aaa', 'c31'), 
(2,'bbb', 'c32'), 
(3,'ccc', 'c33') 


SELECT ca.* from @OutItem 
CROSS APPLY (
    VALUES ('CategoryId', CAST(CategoryId AS VARCHAR)), 
     ('CategoryName', CategoryName), 
     ('C3', c3) 
     --, Add your 10 columns here same as above 
) ca (TabCol, TabVal) 

Результата

TabCol  TabVal 
=================== 
CategoryId 1 
CategoryName aaa 
C3   c31 
CategoryId 2 
CategoryName bbb 
C3   c32 
+0

Спасибо, что так много кришнарей – StackUser

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