首先为使用图像道歉。但是我似乎无法发布我的问题,因为我的格式似乎有问题,所以我无法发布我的问题,但我不知道出了什么问题..
我有这样的 表源
我想将其转换为如下结构
用户身份 | 钥匙 | 价值 |
---|---|---|
用户_1 | 一个 | 3 |
用户_1 | b | 1 |
用户_1 | C | 3 |
用户_2 | C | 2 |
用户_2 | e | 1 |
用户_3 | 一个 | 1 |
用户_3 | F | 2 |
我目前使用下面的查询。但它基于列出的 wtl_key a 到 e 有限制,而我无法列出所有可能的键,因为我不知道所有可能的键。我想查询以捕获所有可能是 aa、bb、zz 等的 json 键
with wide_to_long_key AS (
select unnest(array['a','b','c','d','e']) as wtl_key
)
, data AS (
select
user_id
,details::json->'a' as a
,details::json->'b' as b
,details::json->'c' as c
,details::json->'d' as d
,details::json->'e' as e
)
select
user_id
,wtl_key
,case
when wtl_key='a' THEN a
when wtl_key='b' THEN b
when wtl_key='c' THEN c
when wtl_key='d' THEN d
when wtl_key='e' THEN e
when wtl_key='a' THEN a
end as value
from
data
CROSS JOIN
wide_to_long_key