2011-06-07 44 views
2

我想行轉換2行的2列在SQL 2000 不使用樞我想行轉換2行作爲SQL 2000中2列,而無需使用樞

如:

A B C 
---- ---- ------- 
78 68 3 

我要輸出作爲

Projects Count 
--------- ------- 
A   78 
B   68 
C   3 
+0

對不起,但你的例子對我來說沒有意義 - 你的輸入只包含1行? – 2011-06-07 11:33:06

+0

@Frank - 我會說OP想要將列中的值移動到另一個表的行中。 – 2011-06-07 11:36:06

回答

0

如果我理解正確的話,你確實需要一個支點查詢:

select 'A' as Projects, A as my_count from mytab 
union all 
select 'B' as Projects, B as my_count from mytab 
union all 
select 'C' as Projects, C as my_count from mytab 

(我用count替換count爲my_count,因爲COUNT是SQL中的保留字)。

+0

可能比我的例子更整齊,但這是否解析爲三個表掃描而不是一個? – MatBailie 2011-06-07 12:09:23

+0

@Dems是的,這將導致3個表掃描,所以你的解決方案更有效率。 – 2011-06-07 12:22:46

+0

非常坦率的謝謝你,這解決了我的問題。 – 2011-06-09 09:01:52

1
SELECT 
    pivot.field, 
    CASE pivot.field 
    WHEN 'A' THEN A 
    WHEN 'B' THEN B 
    WHEN 'C' THEN C 
    END as value 
FROM 
    my_table 
CROSS JOIN 
    (SELECT 'A' AS field UNION ALL SELECT 'B' UNION ALL SELECT 'C') AS pivot