2013-03-13 2 views
-1

вы могли бы помочь мне достичь следующейPivot с несколькими colums и строк

У меня есть этот выход SQL таблица

DateWeek Keep_1 This_1 Order_1 Keep_2 This_2 Order_2 Keep_1-Keep_2 This_1-This_2 Order_1-Order_2 
1/1/2013 9  8  7  6  5  4  3    3    3

и превратить его в

RowOrder Column_1 Column_2 Column_1-Column_2 
Keep  9  6  3 
This  8  5  3 
Order 7  4  3

Как вы видите, у меня есть чтобы сохранить порядок в строках, поэтому я не могу упорядочить по алфавиту. Кроме того, я должен стек Keep_1 This_1 Order_1 вместе и Keep_2 This_2 Order_2 также вместе и работать Column_1 с Column_2

Любые идеи, как этого добиться?

Благодаря

+0

Что СУБД вы используете? – Kermit

ответ

1

Если вы используете SQL Server 2008+, то вы можете использовать CROSS APPLY и VALUES:

select c.roworder, 
    c.col1, 
    c.col2, 
    c.col3 
from yourtable t 
cross apply 
(
    values 
    ('Keep', Keep_1, Keep_2, Keep_1_Keep_2), 
    ('This', This_1, This_2, This_1_This_2), 
    ('Order', Order_1, Order_2, Order_1_Order_2) 
) c (roworder, col1, col2, col3) 

См SQL Fiddle with Demo.

Это также может быть сделано с помощью UNION ALL запроса в любой базе данных:

select 'Keep' RowOrder, 
    Keep_1 col1, 
    Keep_2 col2, 
    Keep_1_Keep_2 col3 
from yourtable 
union all 
select 'This' RowOrder, 
    This_1 col1, 
    This_2 col2, 
    This_1_This_2 col3 
from yourtable 
union all 
select 'Order' RowOrder, 
    Order_1 col1, 
    Order_2 col2, 
    Order_1_Order_2 col3 
from yourtable 

SQL Fiddle with Demo См

+0

+1 за то, что он был потрясающим кандидатом на выборах – Kermit

+0

Фантастический !! Действительно фантастично !! спасибо Большое – Selrac

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