sql >> Databasteknik >  >> RDS >> PostgreSQL

korstabell med två (eller fler) radnamn

Använd crosstab() från tilläggsmodulen tablefunc.

Den specifika svårigheten här är att "radnamnet" består av två kolumner. Jag sammanfogar för syftet med frågan och visar inte den sammanlänkade kolumnen i slutet.
Antar fn och ln är NOT NULL . Otestad:

SELECT fn, ln, cat1, cat2
FROM crosstab(
       'SELECT fn || ln AS row_name, fn, ln, file_type, attribute
        FROM   t
        ORDER  BY fn, ln, file_type'

      ,$$VALUES ('cat1'::text), ('cat2')$$)
AS t (row_name text, fn text, ln int, cat1 text, cat2 text);

Ett annat alternativ skulle vara att lägga till ett surrogat "radnamn" med en fönsterfunktion som dense_rank() och behandla de två definierande kolumnerna som "extra kolumner". Exempel:

  • Postgresql-korstabellsfråga med flera "radnamn"-kolumner

Grunderna:

  • PostgreSQL Crosstab Query


  1. Hur man mappar en PostgreSQL-array med Hibernate

  2. Det gick inte att få spring boot för att automatiskt skapa databasschema

  3. Anslut till mysql i en dockningsbehållare från värden

  4. ListView Control Drag Drop Events Hantering