Oracleでのpivot関数の使い方は何ですか?
OracleのPIVOT関数は、行データを列データに変換するために使用されます。つまり、1つの列に複数の値がある場合でも、それを複数の列に変換します。基本的な構文は以下のようになります。
SELECT 列1, 列2, ...
FROM 表
PIVOT (聚合函数(列名)
FOR 列名
IN (值1, 值2, ...))
列1、列2などは保持する非集約列であり、聚合関数は列名に適用される関数(例:SUM、AVG、COUNT等)であり、列名は元の列を変換する列の名前であり、値1、値2などは元の列のユニークな値である。
例えば、salesという表があるとします。この表にはproduct(商品名)、region(地域)、quarter(四半期)、amount(売上金額)という列が含まれています。PIVOT関数を使用して、地域を列、四半期を行として、各四半期ごとの各地域の売上総額を計算することができます。
SELECT *
FROM (
SELECT region, quarter, amount
FROM sales
)
PIVOT (
SUM(amount)
FOR region
IN ('东北' AS NE, '华北' AS NC, '华东' AS EC, '华南' AS SC, '西南' AS SW)
)
上記のクエリは、行に四半期、列にNE(東北)、NC(華北)、EC(華東)、SC(華南)、SW(西南)を含む結果セットを返します。各セルの値は、該当地域の四半期の売上総額になります。
PIVOT関数はクエリでのみ使用でき、INSERT、UPDATE、DELETEなどのDMLステートメントでは使用できません。また、PIVOT関数は元の列の値が有限である必要があり、範囲や連続した値では使用できません。