在PostgreSQL中,要執(zhí)行Crosstab查詢,需要使用crosstab()
函數(shù)。其基本語法如下:
SELECT * FROM crosstab(
'SELECT category, subcategory, value FROM your_table ORDER BY 1,2',
'SELECT DISTINCT subcategory FROM your_table ORDER BY 1'
) AS ct(category text, subcategory1 text, subcategory2 text, ..., subcategoryN text);
這里your_table
是要查詢的數(shù)據(jù)表,category
和subcategory
是數(shù)據(jù)表中的字段,value
是要進(jìn)行交叉表轉(zhuǎn)換的值。在crosstab()
函數(shù)中,第一個參數(shù)是執(zhí)行SQL查詢獲取原始數(shù)據(jù)的語句,第二個參數(shù)是執(zhí)行SQL查詢獲取交叉表列名的語句。最后返回的結(jié)果是一個交叉表,其中category
是原始數(shù)據(jù)的行標(biāo)簽,subcategory1
、subcategory2
等是原始數(shù)據(jù)的列標(biāo)簽,對應(yīng)的值是交叉表中的交匯點(diǎn)的值。