sql - 将数组取消嵌套到表 Postgres
问题描述
如何在 Postgres 中将 ARRAY 取消嵌套为表格格式 这些是我创建的类型
create type ngfcst.test1 as (territory character varying, territoryname character varying, parentname character varying, parentterritory character varying, lowest_level_flag character varying, count bigint);
我正在做一个 array_agg 来使用这种类型返回一个结果集。下面是函数 test12 的示例输出:
select * from test12(
'some_parameters');
OUTPUT (2 records):
{"(\"rec11",rec12,\"rec13",\"rec14\",rec15,1)","(\"rec21\",rec22,\"rec23\",\"rec24\",rec25,2)"}
我希望数据采用正确的表格格式,但这样做无济于事:
with main as(
select * from test12(
'some_parameters'))
select unnest(o_show_proxy::ngfcst.test1[]) as unnest_col from main;
这确实分隔了记录,但没有分隔列。我想要从下面的查询中得到的行和列格式的输出:
select * from unnest(array[row('row11','row12','row13','row14','row15',1),
row('row21','row22','row23','row24','row25',2)]::ngfcst.test1[])
让我知道是否有任何方法可以获取行和列格式的输出。
解决方案
这里cross join lateral
会有所帮助——
根据你的例子。考虑到您的函数test12()
根据您的用户定义的 TYPE 返回正确的数组格式test1
。
尝试这个:
with cte as(
select * from test12(
'some_parameters')
)
select t.* from cte cross join lateral unnest(cte.o_show_proxy::test1[]) t;
推荐阅读
- r - 生成因子列列表
- powershell - 使用“2”参数调用“InvokeSet”的异常:“未知错误(0x80005000)”
- javascript - JQuery平滑滚动到带有粘性导航栏的锚点
- javascript - 使用 HOC 命名的导出
- python - 加速 pandas groupby 应用
- python - Django - 使用 AUTH_PASSWORD_VALIDATORS 验证密码
- python - 子字符串与字符串的模糊/通配符匹配
- sql - 透视 SQL 查询访问
- javascript - 用 JS 设置音频元素音量
- java - AspectJ 加载时间编织在单元测试中工作,但在 Spring Boot(maven)应用程序中的运行时不工作