3

我的表中有IDNUMBER列。

ID 可以是 1 到 200,而 NUMBER 可以是 1 到 100000。

以下代码完美运行。

SELECT *
FROM PIVOT_DATA
PIVOT (
    SUM(NUMBER)
    FOR (ID)
    IN (1 , 2)
    );

但是,我想选择 3 列(1、2、Others),如何选择除 1 或 2 之外的所有其他 ID?它应该类似于下面的代码,但是什么?

SELECT *
FROM PIVOT_DATA
PIVOT (
    SUM(NUMBER)
    FOR (ID)
    IN (1 , 2, OTHERS)
    );
4

2 回答 2

3

使用该CASE语句将您的列转换为您想要透视的三个值。

CASE ID
WHEN 1 THEN '1'
WHEN 2 THEN '2'
ELSE 'OTHERS'
END

然后以该值而不是 ID 为中心。

于 2012-10-19T11:09:47.413 回答
3
WITH TAB AS (SELECT   CASE ID
                         WHEN 1 THEN '1'
                         WHEN 2 THEN '2'
                         ELSE 'OTHERS'
                      END
                         ID, num
               FROM   PIVOT_DATA)
SELECT   *
  FROM   TAB 
  PIVOT ( SUM (NUM) 
          FOR ( ID ) 
                    IN ( 1 , 2 , 'OTHERS' ) );
于 2012-10-19T12:13:38.733 回答