我想要解套这个2D数组来分离1Darray.

当前表格:

id ujvj
1 {{5.3, 0.05}, {3.5, 0.6}, {1.2,0.01}}

结果表:

id uj vj
1 {5.3, 3.5, 1.2} {0.05, 0.6, 0.01}

我找不到一种方法来按元素位置取消多维数组的嵌套,然后将结果放回它们自己的一维数组中.

推荐答案

对于给定的两个输出列:

SELECT d.id, a.*
FROM   data d
CROSS  JOIN LATERAL (
   SELECT array_agg(d.ujvj[d1][1]) AS uj
        , array_agg(d.ujvj[d1][2]) AS vj
   FROM   generate_subscripts(d.ujvj, 1) d1
   ) a;

要在源中保留空数组('{}'),请执行以下操作:

SELECT d.id
     , COALESCE(a.uj, d.ujvj) AS uj
     , COALESCE(a.vj, d.ujvj) AS vj
FROM   data d
LEFT   JOIN LATERAL (
   SELECT array_agg(d.ujvj[d1][1]) AS uj
        , array_agg(d.ujvj[d1][2]) AS vj
   FROM   generate_subscripts(d.ujvj, 1) d1
   ) a ON d.ujvj <> '{}';

fiddle

相关:

Sql相关问答推荐

Oracle SQL对列进行汇总并在列表底部显示总计

PostgreSQL:获取每家店铺收入最高的员工

具有2个共享列的两个表的Amazon RSQL合并

如何连接第二个表并将其内容输入到第一个表的单个字段中?

在Postgres中实现合并功能的干净方法,因为当目标/源不匹配时

LEFT JOIN不显示计数0我期望的方式

从原始表列中经过JSON字符串化的对象数组构建视图

不同表达方式时的大小写

如何将`now()`作为SQL插入语句的一部分?

按分类标准检索记录

根据开始日期和结束日期的差异计算每天的计费

ColdFusion+Docker:未安装SQLSERVER包

删除每个不同日期中未 Select 的最短最长时间

如何在插入时将字符串'03-January-2023'转换为日期时间

如何将特定值从 JSON 列中的一个字段移动到 PostgreSQL 中的另一个字段?

如何仅在满足条件时才按顺序在 SQL 中计数?

根据条件列出不同的值

查找距上一条记录大于或等于 30 天的记录

CURRENT_ROW 窗口框架上的 SQL 滞后

在 AWS athena 的视图之上创建视图时,如何消除此错误:列别名列表有 1 个条目但t有 4 列可用?