在 Postgres 错误中将行转换为列

Convert rows into Column in Postgress Error

您好,我已经创建了一个视图,但想要旋转它。

旋转前的输出:

预期输出:

我的完整查询:

SELECT *
FROM CROSSTAB(
  'SELECT DISTINCT GROUP_DEST::TEXT,DEST::TEXT,TIER::TEXT,RATE::TEXT  FROM  VBB_TIER   ORDER BY 1,2')
AS CT(ROW_NAME TEXT, TIER_1 TEXT, TIER_2 TEXT )

我收到此错误且无法解决:

ERROR:  invalid source data SQL statement
DETAIL:  The provided SQL must return 3 columns: rowid, category, and values.
SQL state: 22023

使用过滤聚合通常比有点复杂的 crosstab() 函数容易得多:

select group_dest, 
       dest, 
       max(rate) filter (where tier in ('0-100', ('0-150')) as tier_1,
       max(rate) filter (where tier in ('101-200', '151-350') as tier_2
from vbb_tier
group by group_dest, dest;