Re: Wert im Zeitverlauf darstellen für z.B. die letzen 5 Tage

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

In response to

Browse pgsql-de-allgemein by date

  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