2016-04-07 4 views
0

Ich habe eine Tabelle Senatoren: sname (key) Partei < --kann Demokrat oder RepublikanerWie pivotiere ich eine verbundene Tabelle in postgresql?

von Tisch Sponsoren verbunden, das ist: sname (fk) Legnum

Ich möchte erstellen eine Tabelle, das ist wie folgt formatiert:

|Democrat | Republican | legnum | 
|Clinton | McCain | 1234 | 

**** Grundsätzlich muss ich mit der Liste der Senatoren eine Tabelle erstellen und legte zwei können didates (einer von jeder Partei), die eine Rechnung sponsert (legnum). Wie mache ich das in postresql? *****

Das obige ist eine Abfrage, die ich geschrieben habe, die nicht funktioniert.

+0

Bitte bearbeiten Sie Ihre Frage mit Beispieldaten und gewünschten Ergebnissen. –

Antwort

0

Ich glaube, Sie dies mit bedingter Aggregation tun können:

select sp.legnum, 
     max(case when se.party = 'D' then se.name end) as Democrat, 
     max(case when se.party = 'R' then se.name end) as Republican 
from senators se join 
    sponsors sp 
    on sp.sname = se.sname 
group by sp.legnum; 

Sie array_agg() oder string_agg() verwenden können, wenn Sie eine Liste aller Sponsoren möchten, Partei.