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

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

【讨论】:

以上是关于如何从表中获取字段列表和不同值的主要内容,如果未能解决你的问题,请参考以下文章

从表中选择 WHERE 子句中具有不同 IN 列表的表

赛普拉斯:如何比较与从表中读出的字符串/文本连接的不同数据类型

OCR 软件能否可靠地从表中读取值?

Django ORM命令获取没有空字段的不同值

从表中获取最新的两个不同位置

如何使用 MS SQL 获取所有字段记录中使用的不同单词列表?