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関数は元の列の値が有限である必要があり、範囲や連続した値では使用できません。

bannerAds