繁体   English   中英

如何从表中获取字段列表和不同值

[英]How to get a list of fields and distinct values from a table

我需要将列转换为行,然后将不同的值放在一起。 理想情况下使用 postgresql 但如果解决方案更容易,可以使用 python。 还需要是动态的,因为每次运行转换时字段都会有所不同。 我已经通过搜索进行了搜索,但很难找到与此类似的任何内容。

源数据表:

选项1 选项2 选项3
1 一个 X
1
2 一个 X
3
3 一个 X

目标表:

字段名 选项
选项1 1
选项1 2
选项1 3
选项2 一个
选项2
选项3 X
选项3

有两种方法可以做到这一点

  1. 使用UNNEST
select distinct 
unnest(array['option1','option2','option3']),
unnest(array[option1,option2,option3])
from test
order by 1,2
  1. 使用Cross Join Lateral
select distinct t2.*
from test t1
  cross join lateral (
     values 
       ('option1',t1.option1 ),
       ('option2',t1.option2),
       ('option3',t1.option3)
       
  ) as t2(option, value)
order by 1,2

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM