Postgres基于数据的搜索列

时间:2018-05-18 11:49:36

标签: postgresql

我必须根据数据搜索列名。

我的表

id | serv1 | serv2 | serv3 | serv4 | serv5 | serv6 |  
-------------------------------------------------------  
001| 2     | 3     | 5     | 1     | 4     | 6     |
-------------------------------------------------------  
002| 2     | 1     | 5     | 3     | 4     | 6     |
-------------------------------------------------------  
003| 6     | 2     | 5     | 3     | 4     | 1     |  

我想要数据值 1 的字段名称。

我的输出

--------------
001| serv4    
--------------
002| serv2    
--------------
003| serv6   
--------------

2 个答案:

答案 0 :(得分:2)

案例陈述可以:

SELECT id,
       CASE WHEN serv1 = 1
            THEN 'serv1'
            WHEN serv2 = 1
            THEN 'serv2'
            WHEN serv3 = 1
            THEN 'serv3'
            WHEN serv4 = 1
            THEN 'serv4'
            WHEN serv5 = 1
            THEN 'serv5'
            WHEN serv6 = 1
            THEN 'serv6'
       END
FROM mytable;

答案 1 :(得分:1)

将行转换为json,并使用函数json_each_text进行转置。然后过滤值等于df['column'].sort_values(ascending=False) 的位置,注意json_each_text将值转换为文本。

'1'