Postgresql postgres表中的数据转置
我需要转换数据,如下表所示。我需要在任意数量的列上动态地执行此操作(它们可以有1到100个列),并且我只想转置一些数据。请注意,最多可以有数百万行 我们有这样的新数据(从csv读入临时表): 我们需要使用查询魔术来转换如下结果:Postgresql postgres表中的数据转置,postgresql,Postgresql,我需要转换数据,如下表所示。我需要在任意数量的列上动态地执行此操作(它们可以有1到100个列),并且我只想转置一些数据。请注意,最多可以有数百万行 我们有这样的新数据(从csv读入临时表): 我们需要使用查询魔术来转换如下结果: id | column_name | value 1 | name | igig 1 | field1 | a 1 | field2 | b 1 | field3
id | column_name | value
1 | name | igig
1 | field1 | a
1 | field2 | b
1 | field3 | cde
2 | name | ihiuh
2 | field1 | gf
2 | field2 | hi
...
我们希望将此新结果集与另一个表联接。可以使用JSON操作完成转置:
魔法 可以使用JSON操作完成转置:
SELECT id,
unnest(ARRAY['name','field1','field2']) AS field_name,
unnest(ARRAY["name", "field1", "field2"]) AS new_value
FROM table
我们选择了:
SELECT id,
unnest(ARRAY['name','field1','field2']) AS field_name,
unnest(ARRAY["name", "field1", "field2"]) AS new_value
FROM table
所以你只要求换位步骤?在其他情况下,我们需要更好的样本和预期输出。:)所以你只要求换位步骤?在其他情况下,我们需要更好的样本和预期输出。:)我们做了类似的事情,但使用了unnest。我会发布一个答案。这可能有效,但我们的更简单。我们做了类似的事情,但使用了unnest。我会发布一个答案。这可能有效,但我们的更简单。
SELECT id,
unnest(ARRAY['name','field1','field2']) AS field_name,
unnest(ARRAY["name", "field1", "field2"]) AS new_value
FROM table