考虑一下sql中的这个表定义
CREATE TABLE matrices (
matrix text[][] NOT NULL
);
假设这个表中的每个矩阵都有相同的维数,如何编写一个查询来转置它们?
例如:
INSERT INTO matrices VALUES
(array[['1','2','3'],
['4','5','6']]),
(array[['f','e','d'],
['c','b','a']]);
在换位之后,它应该看起来像:
{{1,4},{2,5},{3,6}}
{{f,c},{e,b},{d,a}}
1条答案
按热度按时间i5desfxk1#
选项使用
generate_subscripts()
枚举数组每个维度的索引,然后进行两级聚合。我们需要一个主键列来正确地重建每个数组-我假设
id
(如果您没有这样的列,我们可以使用row_number()
):db小提琴演示
样本数据:
结果: