[英]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 | 是 |
有两种方法可以做到这一点
UNNEST
select distinct
unnest(array['option1','option2','option3']),
unnest(array[option1,option2,option3])
from test
order by 1,2
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.