2013-08-24 65 views
1

如果我将不得不例如在一些表:透视逆透视其他栏

[Speed] [Ram] [Whatever] [Other] 
     S1 R1  W1  O1 
     S2 R2  W2  O2 
     S3 R3  W3  O3 

而且我想都这样。

[Chr]  [Value] 
Speed  S3 
Ram  R3 
Whatever W3 
Other  O3 

所以我写下面的代码:

SELECT value 
FROM 
    (SELECT speed, ram 
    FROM pc where code=3) p 
UNPIVOT 
    (value FOR xxx IN 
     (speed, ram) 
)AS unpvt 

问题是,当我想补充我的第二列[CHR]

SELECT value, chr <---- This does not work 
     FROM 
      (SELECT speed, ram, whatever, other 
      FROM pc where code=3) p 
     UNPIVOT 
      (value FOR xxx IN 
       (speed, ram) 
     )AS unpvt 
UNPIVOT 
      (chr FOR zzz IN 
       (speed, ram, whatever, other) 
     )AS unpvt 

我不知道怎么加此代码的另一列。请任何建议。

+1

不太清楚你的要求。为什么你需要两个'UNPIVOT'?示例数据中的“代码”列在哪里? –

+0

假设在DB中有代码列。我不需要2个unpivot。我只是不知道如何在这种情况下添加字符列。 – Nick

+0

[你需要这个吗?](http://www.sqlfiddle.com/#!6/eb53b/5) –

回答

0

你在找?

SELECT Chr, Value 
    FROM 
(
    SELECT t.* 
    FROM pc t 
    WHERE code = 3 
) s 
UNPIVOT 
(
    Value FOR Chr IN (Speed, Ram, Whatever, Other) 
) p 

输出:

 
|  CHR | VALUE | 
-------------------- 
| Speed | S3 | 
|  Ram | R3 | 
| Whatever | W3 | 
| Other | O3 | 

这里是SQLFiddle演示

+0

@Nick它解决了你的问题吗? – peterm