Re: Kreuztabelle?

From: Andreas Kretschmer <akretschmer(at)despammed(dot)com>
To: pgsql-de-allgemein(at)postgresql(dot)org, pgusers(at)postgres(dot)de
Subject: Re: Kreuztabelle?
Date: 2004-11-11 08:28:42
Message-ID: 20041111082842.GA2677@Pinguin.wug-glas.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

am 10.11.2004, um 18:47:41 +0100 mailte Andreas Kretschmer folgendes:
> am Wed, dem 10.11.2004, um 16:33:05 +0100 mailte Markus Bertheau folgendes:
> > Schau dir contrib/tablefunc an und pass es an deine Bedürfnisse an.
>
> Danke, das sieht schon nicht so schlecht aus, stimmt aber noch nicht:
>
> test_db=# select id1, id2, sum(wert) from cross_tab group by id1, id2 order by id1, id2;
> id1 | id2 | sum
> -----+-----+-----
> 1 | 1 | 30
> 1 | 4 | 20
> 2 | 1 | 10
> 2 | 4 | 22
> 3 | 1 | 13
> 3 | 2 | 32
> 3 | 3 | 33
> (7 Zeilen)
>
> test_db=# select * from crosstab ('select id1, id2, sum(wert) from cross_tab group by id1, id2 order by id1, id2;', 4) as ct(id1 int, cat1 float, cat2 float, cat3 float, cat4 float);

Ich schätze mal, ich muß die innere Abfrage (also die, die oben als
erste steht), so umbauen, daß ich für alle Tupel von id1 und id2 einen
Ergebniswert bekomme. Also:

id1 | id2 | sum
-----+-----+-----
1 | 1 | 30
1 | 2 | 0
1 | 3 | 0
1 | 4 | 20
2 | 1 | 10

Also, wenn id2 nicht existiert, dann 0. Ditto, falls id1 nicht
existiert.

Wie könnte ich das hinbekommen?

Andreas
--
Andreas Kretschmer (Kontakt: siehe Header)
Tel. NL Heynitz: 035242/47212
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
=== Schollglas Unternehmensgruppe ===

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Kretschmer 2004-11-13 15:33:06 temporäre Tabelle
Previous Message Andreas Kretschmer 2004-11-10 17:47:41 Re: Kreuztabelle?