PostgreSQL sagt "zurück und sql Tupel Beschreibungen sind unvereinbar"

Habe ich folgende Daten:

ID  CLASS   VALUE
1   NHB    700905.7243
1   HBW    164216.1311
1   HBO    700905.7243
2   NHB    146023.3792
2   HBW    89543.2972
2   HBO    82152.072
3   NHB    1409818.328
3   HBW    220430.7922
3   HBO    323512.9391
4   NHB    48711.3814
4   HBW    163385.1575
4   HBO    363352.3441

Dass ich neu organisieren möchten wie:

ID     HBO             HBW              NHB
1   700905.7243    164216.1311      700905.7243
2   82152.072      89543.2972       146023.3792
3   323512.9391    220430.7922      1409818.328
4   363352.3441    163385.1575      48711.3814

Bitte beachten Sie, dass die Werte in den Spalten HBW, HBO und NHB sind die Summen (sum).

Hier ist das Skript, das ich benutze, um die Ausgabe zu erstellen:

-- CREATE EXTENSION tablefunc;

SELECT *
FROM  CROSSTAB
(
    'SELECT _tlfd.id,   
    _tlfd."class",
    _tlfd."value"
    FROM public._tlfd
    WHERE _tlfd."class" = ''HBW'' or _tlfd."class" = ''HBO'' or _tlfd."class" = ''NHB'' 
    ORDER BY 1,2'
) 
    AS
(
    "class" int, 
    "HBW" text,
    "HBO" text,
    "NHB" text,
    --"Purpose" varchar, 
    "value" double precision
);

Wenn ich das Skript bekomme ich diesen Fehler:

ERROR:  return and sql tuple descriptions are incompatible. 

Ich bin nicht sicher, was das bedeutet und wie man den Fehler korrigieren. Kann jemand bitte lassen Sie mich wissen:

  1. Was mache ich falsch im script?
  2. Wird mein script erzeugen Sie die gewünschte Ausgabe?
  • Versuchen Sie "Weight" double precision aus Kreuztabelle Zeilen-definition.
  • Es sieht aus wie Ihre "HBW", "HBO", ... Spalten sollte NUMERIC, nicht TEXT.
  • Igor und Daniel, ich habe versucht, Ihre Lösungen aber der Fehler bleibt !!!!. Ich habe auch bearbeitet das Skript zu reflektieren, die richtigen Feldnamen.
  • Am besten wäre es, bieten sich die definition der Tabelle mit Datentypen an, was du mit \d tbl im psql. Vorausgesetzt double precision für Ihre Daten-Spalten. Die Anpassung an Ihre tatsächlichen Daten geben ...
InformationsquelleAutor user3357558 | 2014-02-26
Schreibe einen Kommentar