2016-04-07 19 views
0

我有一個表 參議員: 的sname(鍵) 黨< - 能是民主黨還是共和黨如何在postgresql中轉接連接的表格?

這就是由表 贊助商加入: 的sname(FK) legnum

我想創建一個表格格式如下:

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

****基本上我需要創建一個使用參議員名單的表,並把兩個可以(每一方都有一個)贊助法案(legnum)。我如何在postresql中執行此操作? *****

SELECT Democrat, Republican, legnum 
FROM 
    (select distinct sname, legnum, ROW_NUMBER() over 
    (Partition By sname Order By sname) as ColumnSequence 
    from senators 
    inner join sponsors 
    on sponsors.sname = senators.sname) 
pivot 
( 
    max(sname) 
    for ColumnSequence in (Democrat, Republican)) 
)PIV; 

以上是我寫的一個查詢不起作用的查詢。

+0

請編輯您的問題樣本數據和預期的結果。 –

回答

0

我認爲你可以有條件的聚集做到這一點:

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; 

您可以使用array_agg()string_agg()如果你希望所有的贊助商名單,由一方。