postgresql - 在 Postgress 错误中将行转换为列
问题描述
您好,我已经创建了一个视图,但想要对其进行旋转。
旋转前的输出:
预期输出:
我的完整查询:
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;
推荐阅读
- javascript - 如何在 React js 中覆盖 css 模块
- json - \n 在 Flutter 中解析 json 时出错
- c# - 如果用户选择选项,如何更改占位符文本
- docker - 运行“docker run”时出现“未找到匹配命令的可执行文件”异常
- django - Django 我想从 Twitter 获取头像但失败了
- java - 使用 CBC 的 Java Blowfish 加密
- javascript - 元素 id 中的 Node.js 文档字数输出
- javascript - 添加带有数字而不是NaN的字符串时如何获得正确的用户定义输出?
- javascript - 在功能组件中发出渲染数据
- windows - 如何以编程方式获取 Chrome 的频道和版本