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

Oracle Pivotクエリは、列名を引用符で囲んだ列を提供します。何?

    pivotの新しい列にエイリアスを指定できます ステートメントのIN 句。(注:これは、標準のwhere句IN()とは異なります。 エイリアスは許可されません。)

    with testdata as
    (
        select 'Fred' First_Name, 10 Items from dual
        union
        select 'John' First_Name, 5  Items from dual
        union 
        select 'Jane' First_Name, 12 Items from dual
        union
        select 'Fred' First_Name, 15 Items from dual
    )
    select * from testdata
    pivot (
          sum(Items) 
          for First_Name
          in ('Fred' as fred,'John' as john,'Jane' as jane)
          )
    

    また、複数の句がある場合に必要な集計句にも使用できます。

    with testdata as
    (
        select 'Fred' First_Name, 10 Items from dual
        union
        select 'John' First_Name, 5  Items from dual
        union 
        select 'Jane' First_Name, 12 Items from dual
        union
        select 'Fred' First_Name, 15 Items from dual
    )
    select * from testdata
    pivot (
        sum(Items) itmsum,
        count(Items) itmcnt
        for First_Name
        in ('Fred' as fred,'John' as john,'Jane' as jane)
       )
    

    返品

    FRED_ITMSUM FRED_ITMCNT JOHN_ITMSUM JOHN_ITMCNT JANE_ITMSUM JANE_ITMCNT
    ----------- ----------- ----------- ----------- ----------- -----------
             25           2           5           1          12           1
    

    もちろん、その後、完全に一周して、標準のOracleエイリアスを使用し、引用符を元に戻すなど、好きな名前に変更することができます。

    with testdata as
    (
        select 'Fred' First_Name, 10 Items from dual
        union
        select 'John' First_Name, 5  Items from dual
        union 
        select 'Jane' First_Name, 12 Items from dual
        union
        select 'Fred' First_Name, 15 Items from dual
    )
    select FRED_ITMSUM "Fred's Sum", FRED_ITMCNT "Fred's Count"
         , JOHN_ITMSUM "John's Sum", JOHN_ITMCNT "John's Count"
         , JANE_ITMSUM "Janes's Sum", JANE_ITMCNT "Janes's Count"
    from testdata
    pivot (
        sum(Items) itmsum,
        count(Items) itmcnt
        for First_Name
        in ('Fred' as fred,'John' as john,'Jane' as jane)
       )
    

    与える

    Fred's Sum Fred's Count John's Sum John's Count Janes's Sum Janes's Count
    ---------- ------------ ---------- ------------ ----------- -------------
            25            2          5            1          12             1
    



    1. SQL Server(T-SQL)で列のサイズを変更する方法

    2. 単純なPostgreSQLインサートを機能させることができません

    3. SQL Server:5列にわたる動的ピボット

    4. SQL DROP TABLE構文–DBMSによってリストされます