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

単一の列で異なる値のインスタンスをカウントするOracleSQL

    Oracle 11gを使用している場合は、PIVOTを使用できます。 機能:

    select *
    from
    (
      select tkey, status, 
        status as col
      from tableB b
      left join tableA a
        on a.fkey = b.fkey
    ) src
    pivot
    (
      count(status)
      for col in ('20' as Count_Status20, 
                  '30' as Count_Status30,
                  '40' as Count_Status40)
    ) piv;
    

    SQL Fiddle with Demo

    を参照してください

    Oracle11gを使用していない場合は、CASEで集計関数を使用できます。 ステートメント:

    select tkey, 
      count(case when status = 20 then 1 else null end) as Count_Status20,
      count(case when status = 30 then 1 else null end) as Count_Status30,
      count(case when status = 40 then 1 else null end) as Count_Status40
    from tableB b
    left join tableA a
      on b.fkey = a.fkey
    group by tkey
    

    SQL Fiddle with Demo

    を参照してください

    1. .patch_storage

    2. oracle.sql.ARRAYオブジェクトを作成するにはどうすればよいですか?

    3. SQL ONUPDATECASCADEでエラーが発生し続ける

    4. OracleSQLDeveloperでCLOBフィールドデータをエクスポートする方法