1 つのデータ列を複数のデータ列に変換することは、Oracle の一般的な要件です。たとえば、製品、販売日、販売数量を含むテーブルがあるとします。これを各製品の月次売上に換算したいとします。この目標を達成する最も簡単な方法は、PIVOT 操作を使用することです。
次はサンプル テーブルです:
PRODUCT SALE_DATE SALE_QUANTITY ------------------------------------- A 2021-01-01 100 A 2021-01-15 200 A 2021-02-01 300 B 2021-01-01 150 B 2021-03-01 250
これを次の形式に変換します:
PRODUCT JAN_SALE FEB_SALE MAR_SALE ------------------------------------- A 300 300 0 B 150 0 250
PIVOT を使用してこの操作を実装します。次の SQL を使用できます。 :
SELECT PRODUCT, NVL(JAN_SALE, 0) AS JAN_SALE, NVL(FEB_SALE, 0) AS FEB_SALE, NVL(MAR_SALE, 0) AS MAR_SALE FROM (SELECT PRODUCT, TO_CHAR(SALE_DATE, 'MON') AS SALE_MONTH, SALE_QUANTITY FROM SALES_TABLE) PIVOT (SUM(SALE_QUANTITY) FOR SALE_MONTH IN ('JAN' AS JAN_SALE, 'FEB' AS FEB_SALE, 'MAR' AS MAR_SALE))
上記の SQL では、まず元のテーブルを MONTH 列を含む中間結果に変換します。 TO_CHAR 関数を使用して、SALE_DATE を短い月の文字列に変換しました。次に、PIVOT 演算子を使用して、各月の販売数量を列に変換します。 PIVOT の構文は非常に簡潔で、変換する列と値、および新しい列の名前を指定するだけです。
上記の例では、NVL 関数を使用して、月に売上がない場合でも、結果にすべての製品が含まれるようにしました。 NVL 関数を使用しない場合、クエリ結果には製品と売上のある月のみが表示されます。
PIVOT 操作は、列を複数の列に変換するのに適しているだけでなく、同様の構文を使用して行を複数の行に変換することもできます。たとえば、地域、製品、販売数量を含むテーブルがあるとします。これを製品および地域ごとの総売上高に変換したいと考えています。 PIVOT 操作を使用すると、この目標を簡単に達成できます。
つまり、PIVOT 操作は、Oracle SQL の非常に便利でシンプルなツールであり、列を複数の列に、または行を複数の行にすばやく変換できます。その柔軟性とカスタマイズ可能な性質により、多くの状況で役立ちます。
以上がOracleは列を複数の列に変換しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。