From: | "Gunnar \"Nick\" Bluth" <gunnar(dot)bluth(dot)extern(at)elster(dot)de> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Re: Wert im Zeitverlauf darstellen für z.B. die letzen 5 Tage |
Date: | 2016-01-26 07:58:16 |
Message-ID: | 56A72718.2090607@elster.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Am 26.01.2016 um 07:33 schrieb Thomas Markus:
> Moins,
>
> dynamische Spalten sind nicht drin. Insofern musst du jede Spalte fest
> definieren.
>
> bei der Struktur
> create temp table t (
> id int, name text, datum date, platz int
> );
>
> könnte man es so machen:
> select
> a.name
> , (select platz from t where t.name=a.name and t.datum='2015-01-14')
> as "14.01.2015"
> from
> ( select distinct name from t ) a
Bezüglich der Darstellung in Reihen hilft dir wahrscheinlich crosstab
weiter:
http://www.postgresql.org/docs/9.5/static/tablefunc.html
Wie du die Leerstellen füllst, hatte ich dir ja schon nicht
öffentlichkeitsfähig ;-) per PM geschickt...
Gruß,
Nick
>
>
> Gruss
> Thomas
>
> Am 25.01.2016 um 20:49 schrieb Thomas Uzunoff:
>> Hallo,
>>
>> ich habe ein Problem, was ich momentan nicht gelöst bekomme. Ich habe
>> eine solche Tabelle:
>>
>> ID |Name |Datum |Platz
>> ----------------------------
>> 1 |Gerhard|14.1.2015| 1
>> 2 |Helmut |14.1.2015| 2
>> 3 |Angela |14.1.2015| 3
>> 4 |Gerhard|13.1.2015| 2
>> 5 |Helmut |13.1.2015| 1
>> 6 |Angela |13.1.2015| 3
>> 7 |Gerhard|12.1.2015| 1
>> 8 |Helmut |12.1.2015| 2
>> 9 |Gerhard|11.1.2015| 2
>> 10 |Angela |11.1.2015| 1
>> 11 |Gerhard|10.1.2015| 2
>> 12 |Angela |10.1.2015| 1
>>
>> Das gewünschte Ergebnis ist:
>>
>> Name |14.1.2015|13.1.2015|12.1.2015|11.1.2015|10.1.2015|
>> -----------------------------------------------------------
>> Gerhard | 1 | 2 | 1 | 2 | 2 |
>> Helmut | 2 | 1 | 2 | | |
>> Angela | 3 | 3 | | 1 | 1 |
>>
>> Hierbei wird an jedem Tag der Platz für alle anwesenden Personen
>> festgestellt und über den Zeitverlauf dargestellt. Wenn eine Person an
>> einem Tag nicht anwesend war, soll die Zelle leer oder z.B. mit einem
>> x oder einer 0 markiert werden. Momentan habe ich das Problem, dass
>> meine Abfrage mir zwar die Personen mit den Tagen schon anzeigt,
>> leider werden die leeren Felder wie z.B. 11.1.2015-Angelas Platz 1 auf
>> den 12.1.2015 verschoben. Die Spalte am 12.1.2015 sieht dann
>> fälschlicher weise so aus:
>>
>> |12.1.2015|
>> | 1 |
>> | 2 |
>> | 1 |
>>
>> Gerne auch ohne das Datum als Spaltenname. Geht das mit Postgres
>> irgendwie? Wenn ja, wie?
>>
>> Vielen Dank für jeden Hinweis, der mich der Lösung etwas näher bringt.
>>
>> Thomas
>>
>>
>
>
>
--
Gunnar "Nick" Bluth
DBA ELSTER
Tel: +49 911/991-4665
Mobil: +49 172/8853339
From | Date | Subject | |
---|---|---|---|
Next Message | Harald Fuchs | 2016-01-26 09:24:43 | Re: Wert im Zeitverlauf darstellen für z.B. die letzen 5 Tage |
Previous Message | Thomas Markus | 2016-01-26 06:33:02 | Re: Wert im Zeitverlauf darstellen für z.B. die letzen 5 Tage |