我正在尋找一種方法來動態地或自動地在下面的case語句中命名列。情景 - 我試圖找出每個國家有多少個不同行業的公司。這些國家是行,而類別是列。postgresql在case語句中動態命名列
我使用PostgreSQL的支點這樣就不會工作,我沒有足夠的新版本,我可以使用交叉表
我希望能夠複製此爲更大的場景中我不必擔心像我在這裏那樣對cat_nbr和列名進行「硬編碼」。
SELECT country,
count(CASE WHEN cat_nbr = 1 THEN company_code END) retail,
count(CASE WHEN cat_nbr = 2 THEN company_code END) finance,
count(CASE WHEN cat_nbr = 3 THEN company_code END) oil,
count(CASE WHEN cat_nbr = 4 THEN company_code END) tech
FROM global_companies
GROUP BY country
的情況下,它是不明確的表結構形式有以下欄目:
country - cat_nbr - company_code - cat_desc.
Cat_desc
是我已經硬編碼了的話「零售」,「金融」等
有什麼我可以做到這一點與我指的是每個cat_nbr/cat_desc什麼少硬編碼?有很多很多的cat_nbrs和cat_descs。
Postgresql版本?你有一張桌子cat_nbr? –
您需要創建一個函數並創建一個類似於[this]的動態查詢(http://stackoverflow.com/questions/20965882/for-loop-with-dynamic-table-name-in-postgresql-9-1)但是,你會在你的分類表之間循環。 –
@JuanCarlosOropeza。 Cat_nbr和零售/財務齊頭並進。例如,類別#1 =零售,#2 =金融等。將語言轉化爲正在發生的事情。版本是在7s的東西,不能確切atm。 – runningbirds