Kreuztabelle konnte nicht verwendet werden

select  * from crosstab
('select id_golongan_baru, extract(year from periode) as tahun , count(id_golongan_baru) as total, ringkasan
from t_golongan
where status_usulan = Proses and proses_by  <> null
group by id_golongan_baru, extract(year from periode)') as ringkasan (id int, tahun int, total int);

Bitte helfen Sie mir, eine Lösung zu finden, warum ich diese Abfrage nicht verwendet habe. Ich habe die Meldung
ERROR: function crosstab(unknown) does not exist.

hast Du die Extension installiert? Mir scheint das auch syntaktisch falsch, die letzte Spalte der Select-Liste ist nicht im group by. Und: Ein Vergleich via <> NULL ergibt NULL, Du suchst is not.

Offensichtlich wurde die extension tablefunc nicht installiert. Aber im allgemeinen ist die crosstab Funktion eh nicht wirklich hilfreich, weil man auch da alle Spalten der crosstab Tabelle vorher wissen und angeben muss. Da kann man eigentlich auch gleich auf eine “normale” gefilterte Aggregation zurückgreifen.

Aber selbst wenn die Funktion existiert, wird es nicht funktionieren, da die eigentliche Abfrage einige Fehler hat. <> null funktioniert nicht. Das muss is not null sein. Ist “Proses” eine Spalte der Tabelle oder ein Wert der verglichen werden soll. Wenn es ein Wert ist, muss er in Anführungszeichen stehen, status_usulan = 'Proses'.

Also sowas:

select id_golongan_baru, extract(year from periode) as tahun, 
       count(id_golongan_baru) as total, 
       ringkasan
from t_golongan
where status_usulan = 'Proses' 
  and proses_by is not null
group by id_golongan_baru, extract(year from periode)

Das wird aber immer noch nicht funktionieren. Die Spalte ringkasan muss entweder mit in die GROUP BY Bedingung aufgenommen werden, oder aber sie muss Teil einer Aggregation sein (z.B. min(ringkasan)).

Aber ohne zu wissen, wie genau das Ergebnis aussehen soll, kann man das nicht wirklich beantworten.

Vielen Dank für die Informationen, die ich zuerst versuchen werde, die Erweiterung zu installieren, und tatsächlich scheint es, als hätte ich ringkasan falsch geschrieben, sie sollte nicht vorhanden sein.