2017-11-04 13 views
-1

Ich möchte bestimmte Informationen aus meiner Datenbank extrahieren. Nach der ersten Abfrage zu machen habe ich ein Ergebnis wie folgt aus:Wie transformiere ich das Ergebnis einer Abfrage in PostgreSQL

Name Description Status Count 
------------------------------------------- 
A  a-desc  S1  200 
A  a-desc  S2  50 
A  a-desc  S3  102 
B  b-desc  S1  10 
B  b-desc  S3  12 

Ich möchte, dass die Tabelle auf diese anderen zu transformieren:

Name Description S1  S2  S3 
------------------------------------------- 
A  a-desc   200 50  102 
B  b-desc   10  0  12 

ich dies mit Postgres tun wollen. Ich habe versucht, verschachtelte Abfragen zu verwenden, aber ich war im Moment nicht in der Lage.

+0

Welche Datenbank benutzen Sie? – GurV

+0

"sql" ist eine Sprache, die aber von verschiedenen db-Anbietern anders implementiert wird. Wir müssen die Marke der Datenbank kennen, da die Syntax der Abfragen unterschiedlich ist. MySQL? Orakel? Postgres? SQL Server? .... –

+0

Ja, sorry, ich benutze Postgre Sql – afonte

Antwort

1

Hier ist eine „traditionelle“ Art und Weise eine „Pivot-Abfrage“ generische SQL der Durchführung, dass die meisten RDBMS unterstützen:

select 
    Name 
, Description  
, max(case when status = 'S1' then count end) as S1 
, max(case when status = 'S2' then count end) as S2 
, max(case when status = 'S3' then count end) as S3 
from (

    your query goes here 

    ) d 
group by 
    Name 
, Description  

jedoch Ihre Datenbank spezifische Merkmale für einen Dreh liefern kann (wenn wir wissen, was das ist) aber die traditionelle Methode ist anpassungsfähig und nützlich zu wissen.

+0

Sehr nützliche Antwort, Ihre Pivot-Abfrage funktioniert sehr gut :). Ich werde das vertiefen. – afonte

Verwandte Themen