У меня есть следующие select:
select json_extract_path_text(rules, 'amount', '5', 'percentage')
from promotion_rules
Пример из JSON выглядит следующим образом:
{
"amount": {
"1": {
"percentage": 1
},
"2": {
"percentage": 3
},
"3": {
"percentage_below_eq": 5,
"percentage_above": 10,
"price": 20
},
"4": {
"percentage_below_eq": 10,
"percentage_above": 15,
"price": 20
}
}
}
Я хочу использовать значения из других запросов / таблиц / cte внутри выше json_extract Функция вместо '5' (или достичь точного эффекта), как это можно сделать?
Вот часть кода и скрипка с полными данными, я не могу поместить все это здесь, потому что стек говорит мне, что мой пост я в основном код.
with percentages as (select pr.*, json_object_keys(rules->'amount')::INT as amount
from
promotion_rules pr
where id = 1
)
select
o.id as order_id,
json_extract_path_text(rules, 'amount', o.products_no, 'percentage') as percentage --it doesn't work this way, either with brackets
from orders o
join percentages p on p.amount = o.products_no
https://www.db-fiddle.com/f/oSQ3eW2G3kHgr3xvpHLw9Q/0