如何从表中获取字段列表和不同值
Posted
技术标签:
【中文标题】如何从表中获取字段列表和不同值【英文标题】:How to get a list of fields and distinct values from a table 【发布时间】:2021-05-19 09:28:04 【问题描述】:我需要将列转换为行,然后将不同的值放在旁边。理想情况下使用 postgresql,但如果解决方案更容易,可以使用 python。还需要是动态的,因为每次运行转换时字段都会有所不同。我已经通过搜索进行了搜索,但很难找到与此类似的任何内容。
源数据表:
option1 | option2 | option3 |
---|---|---|
1 | A | X |
1 | B | Y |
2 | A | X |
3 | B | Y |
3 | A | X |
目标表:
fieldname | option |
---|---|
option1 | 1 |
option1 | 2 |
option1 | 3 |
option2 | A |
option2 | B |
option3 | X |
option3 | Y |
【问题讨论】:
【参考方案1】:有两种方法可以做到这一点
-
使用
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
DEMO
【讨论】:
以上是关于如何从表中获取字段列表和不同值的主要内容,如果未能解决你的问题,请参考以下文章