在我的項目上,數據模型發生了變化,我必須做一個新的請求來獲取信息,但過去它看起來像所有的數據都在同一行,但現在是該數據的一部分在另一個表中,它返回給我列。crosstab postgres - 行到列
所以我要求退貨:
我認爲這是很容易,但我真的不明白是怎麼功能crosstab
作品。我嘗試這樣做:
SELECT *
FROM crosstab(
'SELECT c.cd_type as typcou, c.dt_envoi as dtenvcou, c.commentaire as comment, c.signataire as signur
FROM comm.courrier c
WHERE c.id_formalite=1
order by 1,2',
'select lf.valeur as valeur from formalite.ligne_formalite lf, formalite.formalite f where lf.fk_formalite=f.id AND lf.fk_formalite=1'
)
AS c(typcou text, dtenvcou text, comment text, signataire text, valeur1 text, valeur2 text, valeur3 text);
不過,我
ERREUR: 無效的返回類型SQL參謀部:42601 細節:查詢指定返回元組有7列,但交叉返回5
有人能幫我弄清楚有什麼問題嗎?
你想要什麼(根據給定的截圖)幾乎是不可能的:你無法將一行的特定值與新列的值相匹配(你無法將第n個值設置爲n - 列)。 你應該製作一個特定的腳本來修改你的表模式。 –
但是當我去幫助postgres時,他們說你可以使用交叉表來做這些 http://docs.postgresqlfr.org/9.0/tablefunc.html – user1879231