Oracle
 sql >> база данни >  >> RDS >> Oracle

Завъртане/въртяща се таблица с агрегиране в Oracle

Да, така мисля. Лесно е да направите въртене като това с MAX съвкупност:

SELECT
    *
FROM
(
    SELECT
        project,
        attribute,
        value
    FROM
        table1
) AS SourceTable
PIVOT
(
    MAX(value)
    FOR attribute IN ([foo],[bar],[baz])
) AS pvt

В противен случай трябва да направите изявление case вътре в агрегата a max. Като това:

SELECT
    MAX(CASE WHEN attribute='foo' THEN value ELSE NULL END) AS foo,
    MAX(CASE WHEN attribute='bar' THEN value ELSE NULL END) AS bar,
    MAX(CASE WHEN attribute='baz' THEN value ELSE NULL END) AS baz,
    project
FROM
    table1
GROUP BY
    project

Това е почти същото нещо като правенето на PIVOT . Но бих предпочел да направя PIVOT над CASE WHEN MAX ..




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намеря привилегиите и ролите, предоставени на потребител в Oracle?

  2. Как да проверите максималния брой разрешени връзки към база данни на Oracle?

  3. Substr или LIKE по-бърз ли е в Oracle?

  4. как да обединя повече от две колони в plsql developer?

  5. Как можем да определим размера на изходния параметър в съхранената процедура?