2013-03-13 57 views
-1

你能幫我實現以下樞軸與多個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_2

任何想法操作Column_1如何實現這一目標?

感謝

+0

您正在使用什麼數據庫管理系統? – Kermit 2013-03-13 17:19:18

回答

1

如果您正在使用SQL Server 2008+,那麼你可以使用CROSS APPLYVALUES

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 2013-03-13 17:29:18

+0

非常棒!真的很棒!非常感謝你 – Selrac 2013-03-13 18:56:18