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 ===
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? |