Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-de-allgemein by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group