sql >> Database >  >> RDS >> Oracle

Tabel draaien/draaien met aggregatie in Oracle

Ja, ik denk van wel. Het is gemakkelijk om zo'n pivot te maken met een MAX totaal:

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

Anders moet u een case-statement doen in het a max-aggregaat. Zoals dit:

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

Dit is bijna hetzelfde als het doen van de PIVOT . Maar ik zou liever de PIVOT . doen over de CASE WHEN MAX ..




  1. Een SQL IN-component parametriseren

  2. Gegevens aggregeren met behulp van groepsfuncties (groeperen op orakel)

  3. Hoe het PostgreSQL-dumpbestand in Postgres-databases te herstellen?

  4. “Is het geheim? Is het veilig?" Omgaan met gevoelige gegevens in uw gegevensmodellering