7

水平行を垂直行に変換する SQL クエリ (SQL Server) に行き詰まっています。

以下は私のデータです

No      Flag_1    Flag_2    Flag_3
---      ----      -----     -----
A         1         2         3
B         4         1         6

変換後、テーブルは

No     FlagsName    Flag_value
--      ----        ----------
A        Flag_1        1
A        Flag_2        2  
A        Flag_3        3
B        Flag_1        4
B        Flag_2        1
B        Flag_3        6

これに関する情報は役に立ちますか?

ROW_NUMBER私はパーティションをいじろうとしています。しかし、それはどういうわけか機能していません!!!

ありがとう !!!

4

1 に答える 1

14

あなたは使用することができますUNION ALL

select No, 'Flag_1' as FlagName, Flag_1 as Flag_Value
from yourtable
union all
select No, 'Flag_2' as FlagName, Flag_2 as Flag_Value
from yourtable
union all
select No, 'Flag_3' as FlagName, Flag_3 as Flag_Value
from yourtable

またはUNPIVOT

select no, FlagsName, flag_value
from yourtable
unpivot
(
    flag_value
    for FlagsName in (Flag_1, Flag_2, Flag_3)
) u

SQL FiddleWithDemoを参照してください

于 2012-09-19T19:49:42.797 に答える