2016-12-18 56 views
0

行列的PostgreSQL 9.3我有一個表,顯示下方跨越單個一年發行indivual許可證:如何使用扁平化的PostgreSQL

permit_typ| zipcode| address| name 
-------------+------+------+----- 
CONSTRUCTION  | 20004 | 124 fake streeet | billy joe 
SUPPLEMENTAL  | 20005 | 124 fake streeet | james oswald 
POST CARD   | 20005 | 124 fake streeet | who cares 
HOME OCCUPATION | 20007 | 124 fake streeet | who cares 
SHOP DRAWING  | 20009 | 124 fake streeet | who cares 

我試圖拉平這個所以它看起來像

CONSTRUCTION | SUPPLEMENTAL | POST CARD| HOME OCCUPATION | SHOP DRAWING | zipcode 
-------------+--------------+-----------+----------------+--------------+-------- 
1   | 2   | 3   | 5   | 6   | 20004 
1   | 2   | 3   | 5   | 6   | 20005 
1   | 2   | 3   | 5   | 6   | 20006 
1   | 2   | 3   | 5   | 6   | 20007 
1   | 2   | 3   | 5   | 6   | 20008 

一直在嘗試使用交叉表,但它稍微超出了我生鏽的SQL體驗。任何人有任何想法

回答

1

我通常使用條件聚合來處理這種類型的查詢。在Postgres中,你可以這樣做:

select zipcode, 
     sum((permit_typ = 'CONSTRUCTION')::int) as Construction, 
     sum((permit_typ = 'SUPPLEMENTAL')::int) as SUPPLEMENTAL, 
     . . . 
from t 
group by zipcode;