Postgresql 基于数据的Postgres搜索栏
我必须根据数据搜索列名 我的桌子Postgresql 基于数据的Postgres搜索栏,postgresql,Postgresql,我必须根据数据搜索列名 我的桌子 id | serv1 | serv2 | serv3 | serv4 | serv5 | serv6 | ------------------------------------------------------- 001| 2 | 3 | 5 | 1 | 4 | 6 | ------------------------------------------------------- 002| 2
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
--------------
将行转换为json,并使用函数json_each_text进行转置。然后在值等于
'1'
的地方进行过滤,注意json_每个_文本都将值转换为文本
WITH mytable
(id, serv1, serv2, serv3, serv4, serv5, serv6)
AS (
VALUES
('001', 2,3,5,1,4,6),
('002', 2,1,5,3,4,6),
('003', 6,2,5,3,4,1)
)
SELECT id, tjs.key column_name
FROM mytable t, json_each_text(row_to_json(t)) tjs
WHERE tjs.value = '1'
将行转换为json,并使用函数json_each_text进行转置。然后在值等于
'1'
的地方进行过滤,注意json_每个_文本都将值转换为文本
WITH mytable
(id, serv1, serv2, serv3, serv4, serv5, serv6)
AS (
VALUES
('001', 2,3,5,1,4,6),
('002', 2,1,5,3,4,6),
('003', 6,2,5,3,4,1)
)
SELECT id, tjs.key column_name
FROM mytable t, json_each_text(row_to_json(t)) tjs
WHERE tjs.value = '1'
一份案例陈述可以:
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;
一份案例陈述可以:
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;