-1

次のことを達成するのを手伝ってもらえますか

この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
2013 年 1 月 1 日 9 8 7 6 5 4 3 3 3

そしてそれを

RowOrder 列_1 列_2 列_1-列_2
キープ 9 6 3
この 8 5 3
オーダー 7 4 3

ご覧のとおり、行の順序を維持する必要があるため、アルファベット順に並べることはできません。Keep_1 This_1 Order_1また、一緒に積み重ねて一緒Keep_2 This_2 Order_2に操作するColumn_1必要がありますColumn_2

これを達成する方法はありますか?

ありがとう

4

1 に答える 1

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 を参照してください

于 2013-03-13T17:25:48.627 に答える