我有一个有30列的表,并且它一直在增长。我无法将其分成多个表,因为它会导致Tableau上出现一些可视化问题。所以我正在寻找的解决方案是创建一个新表。旧的看起来像
id | name | city| country| metric1 | metric2|.....|metric30
------------------------------------------------------------
1 | dgshfsshd| Bost |United Stats|sjdhsjdsjdhjs|gdshduadjd|.......|hdhsjfhsjfsjf
2 | jsghfghfg| gert |United Stats|sjdhsjdsjdhjs|gdshduadjd|.......|hdhsjfhsjfsjf
.
.
.
新表格格式应该是不确定它是否可行(我也对新想法持开放态度)
id | name | city| country | metric name | metric value
1 |dgfdhh| sjdh|sghshdjd|metric1|sjdsjhfsfhsjfhsjf
2 |jagdha| qewt|shgshfgs|metric2|hfjshfjhsjfshjsfh
.
.
.
如果您还有其他问题,请与我们联系。我正在使用postgres
答案 0 :(得分:0)
您可以取消嵌套这些列的数组,并使用with ordinality
获取该列在该数组中的索引
select t.id, t..name, t.city, t.country,
concat('metric', m.idx) as metric_name,
m.val as metric_value
from the_table t
cross join lateral unnest(array[metric1,metric2,.....,metric30) with ordinality as m(val,idx);