2016-06-17 20 views
0

私が出会った同様の質問のほぼすべては、PIVOTを使用することを示唆していますが、私の場合はどのように使用するのか理解できませんでした。単一行の結果を単一の列に変換する結果

これは、この結果は私が1列にそれを持ってしたいが、それを行う方法を知らない

+-------+------+------+------+-----+------+-----+------+-----+-----+------+-----+-----+------+-------+ 
| H01 | H02 | H03 | H04 | H05 | H06 | H07 | H08 | H09 | H10 | H11 | H12 | H13 | H14 | H15 | 
+-------+------+------+------+-----+------+-----+------+-----+-----+------+-----+-----+------+-------+ 
| 11802 | 2239 | 1575 | 2230 | 833 | 3189 | 152 | 4234 | 617 | 428 | 2211 | 263 | 783 | 3954 | 15922 | 
+-------+------+------+------+-----+------+-----+------+-----+-----+------+-----+-----+------+-------+ 

を設定して返す私のクエリ

SELECT 
    SUM(CONVERT(INT,H01)) as H01, 
    SUM(CONVERT(INT,H02)) as H02, 
    SUM(CONVERT(INT,H03)) as H03, 
    SUM(CONVERT(INT,H04)) as H04, 
    SUM(CONVERT(INT,H05)) as H05, 
    SUM(CONVERT(INT,H06)) as H06, 
    SUM(CONVERT(INT,H07)) as H07, 
    SUM(CONVERT(INT,H08)) as H08, 
    SUM(CONVERT(INT,H09)) as H09, 
    SUM(CONVERT(INT,H10)) as H10, 
    SUM(CONVERT(INT,H11)) as H11, 
    SUM(CONVERT(INT,H12)) as H12, 
    SUM(CONVERT(INT,H13)) as H13, 
    SUM(CONVERT(INT,H14)) as H14, 
    SUM(CONVERT(INT,H15)) as H15 
FROM 
    IslemFisi 
WHERE 
    (H01 = 1) OR (H02 = 1) OR (H03 = 1) OR (H04 = 1) OR 
    (H05 = 1) OR (H06 = 1) OR (H07 = 1) OR (H08 = 1) OR 
    (H09 = 1) OR (H10 = 1) OR (H11 = 1) OR (H12 = 1) OR 
    (H13 = 1) OR (H14 = 1) OR (H15 = 1) 

です。ピボットを使用するといくつかの集計関数が必要ですが、私はこの時点で集計することはありません。

+3

https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx – krish

答えて

1
;WITH cte AS (
--put your query here 
) 

SELECT H, [VALUES] 
FROM (
    SELECT * 
    FROM cte) as p 
UNPIVOT (
    [VALUES] FOR H IN (H01, H02, H03, H04 ...etc) 
) as unpvt 

出力:あなたがアンピボットを使用する必要が

H VALUES 
H01 11802 
H02 2239 
.... 
関連する問題