Datum

Fragen und Probleme rund um die Abfragespache SQL.
simar
Benutzer
Beiträge: 67
Registriert: Di 9. Okt 2018, 17:40

Datum

Beitrag von simar » Di 13. Aug 2019, 15:04

Hallo, ich hab mal wieder eine Frage

Ich möchte diese Datum Darstellung Thu Mar 29 2018 21:50:59 GMT+0200 (Mitteleuropäische Sommerzeit)
in dieses Format ändern 2019-08-10 15:54:15.301+00

ist das möglich und wenn ja wie

Besten Dank vorab

akretschmer
Erfahrener Benutzer
Beiträge: 7666
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Datum

Beitrag von akretschmer » Di 13. Aug 2019, 15:28

PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 67
Registriert: Di 9. Okt 2018, 17:40

Re: Datum

Beitrag von simar » Fr 16. Aug 2019, 11:26

Ich komme mit den Seiten nur schlecht zurecht, habs dann aber in meinen älteren sql Scripts gefunden

Trotzdem Danke!!

simar
Benutzer
Beiträge: 67
Registriert: Di 9. Okt 2018, 17:40

Re: Datum

Beitrag von simar » Sa 17. Aug 2019, 16:28

Mein nächstes Problem
habe eine Tabelle, stark vereinfacht
und möchte darstellen wie oft kommt jedes Ergebnis pro AuftragsNr vor

AuftragNr|Ergebnis|
100 | 10 |
100 | 10 |
100 | 10 |
100 | 9 |
100 | 8 |
200 | 10 |
200 | 1 |
200 | 7 |
200 | 7 |

Aussehen sollte es so

AuftragsNr| 10 | 9 | 8 | 7 | 1 |
100 | 3 | 1 | 1 |
200 | 1 | | | 2 |

habs mit crosstab versucht komme aber zu keinem Ergebnis
aber für die Spezialisten hier sicher kein Problem

besten Dank für jede Hilfe oder Anregung

gruß simar

akretschmer
Erfahrener Benutzer
Beiträge: 7666
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Datum

Beitrag von akretschmer » Mo 19. Aug 2019, 08:54

Mal für Ergebniss von 10 bis 7, die Erweiterung ab 6 bis 1 überlasse ich Dir zur Übung:

Code: Alles auswählen

test=*# select * from simar ;
 nr  | erg 
-----+-----
 100 |  10
 100 |  10
 100 |  10
 100 |   9
 100 |   8
 200 |  10
 200 |   1
 200 |   7
 200 |   7
(9 rows)

test=*# select nr, sum(case when erg = 10 then 1 else 0 end) as "10", sum(case when erg = 9 then 1 else 0 end) as "9", sum(case when erg = 8 then 1 else 0 end) as "8", sum(case when erg = 7 then 1 else 0 end) as "7" from simar group by nr; 
 nr  | 10 | 9 | 8 | 7 
-----+----+---+---+---
 200 |  1 | 0 | 0 | 2
 100 |  3 | 1 | 1 | 0
(2 rows)

test=*# 
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 67
Registriert: Di 9. Okt 2018, 17:40

Re: Datum

Beitrag von simar » Mo 19. Aug 2019, 12:16

Danke Dir, bei der Steilvorlage kein Problem, funktioniert.

Zusatzfrage besteht die Möglichkeit die Werte der Spalte "erg" in die Zeile " nr | 10 | 9 | 8 | 7 " als Spaltenname zu übernehmen nachdem ich sie vorher gezählt wurden

test=*# select * from simar ;
nr | erg
-----+-----
100 | 10
100 | 10
100 | 10
100 | 9
100 | 8
200 | 10
200 | 1
200 | 7
200 | 7

akretschmer
Erfahrener Benutzer
Beiträge: 7666
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Datum

Beitrag von akretschmer » Mo 19. Aug 2019, 12:33

Hä?
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 67
Registriert: Di 9. Okt 2018, 17:40

Re: Datum

Beitrag von simar » Mo 19. Aug 2019, 13:02

ich meinte dass der select ohne , as "10", as "9" ,vorgaben auskommt,
sondern direkt den gefundenen Wert ( 10; 9; 8; 7; 1; )als Spaltennamen übernimmt
wird aber nicht funktionieren.

akretschmer
Erfahrener Benutzer
Beiträge: 7666
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Datum

Beitrag von akretschmer » Mo 19. Aug 2019, 13:12

Im Prinzip ginge das auch, dazu müßte man aber das SQL-Statement dynamisch erstellen und ausführen.
https://www.postgresql.org/docs/11/plpg ... CUTING-DYN
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 67
Registriert: Di 9. Okt 2018, 17:40

Re: Datum

Beitrag von simar » Mo 19. Aug 2019, 14:01

dachte man könnte das Suchergebnis einfach um 90 Grad drehen mittels crosstab oder array_to_string()
aber das ist leider zu hoch für mich

Antworten