3

テーブルに列がIDあります。NUMBER

ID は 1 から 200 まで、NUMBER は 1 から 100000 までのいずれかです。

以下のコードは完璧に機能します。

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

しかし、3 つの列 (1、2、その他) を選択したいのですが、1 または 2 以外のすべての ID を選択するにはどうすればよいですか? 以下のコードのようなものになるはずですが、どうでしょうか。

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

2 に答える 2

3

ステートメントを使用してCASE、列をピボットする 3 つの値に変換します。

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 に答える