sql >> データベース >  >> RDS >> Oracle

Oracle SQL-テーブルの行を列にピボットし、ピボットでサブクエリを使用する

    条件付き集計を使用するだけです:

    SELECT COALESCE(customer, 'Grand Total') as customer,
           SUM(CASE WHEN Hotel = 'Royal Palms' THEN 1 ELSE 0 END) as "Royal Palms",
           SUM(CASE WHEN Hotel = 'Beverly Hills' THEN 1 ELSE 0 END) as "Beverly Hills",       
           SUM(CASE WHEN Hotel = 'Ritz-Carlton' THEN 1 ELSE 0 END) as "Ritz-Carlton" ,
           COUNT(*) as "Grand Total",
           COUNT(Booked_Status) as "Num Booked"
    FROM CUST_HOTEL_VIEW
    GROUP BY ROLLUP(CUSTOMER)
    ORDER BY CUSTOMER;
    

    条件付き集計は、pivotよりもはるかに柔軟性があります 。個人的には、pivotの理由はわかりません。 構文:1つのことをうまく実行しますが、従来のSQLステートメントのような構成要素ではありません。

    ROLLUP() また、非常に役立ちます。以下も使用できます:

    GROUP BY GROUPING SETS ( (CUSTOMER), () )
    


    1. 地理空間クエリの続編:場所に最も近いn個のポイントを見つけます

    2. GolangコンテナからPostgresDockerコンテナに接続できません

    3. ストアドプロシージャでのLOADDATAINFILEコマンドの使用

    4. 同じ条件値で別のテーブルの値を結合する方法