Povedlo se mi to zkrátit na následující dotaz.
BEGIN;
CREATE TEMPORARY TABLE sales_sales (
id bigint,
royalty decimal(10,12),
user_type int,
report_group_id int
) ON COMMIT DROP;
CREATE TEMPORARY TABLE exchange_rates (
account_id bigint,
key varchar(255)
) ON COMMIT DROP;
CREATE TEMPORARY TABLE sales_revenues_for_statement_run_EUR_1 ON
COMMIT DROP AS
SELECT
sales_sales.*
FROM
(
VALUES
(1, ARRAY[0.8, 0.9], 'example_user_type', 1001),
(2, ARRAY[1.0, 0.7], 'another_user_type', 1002)
) AS sales_revenues(sale_id, chain, user_type, statement_id)
LEFT JOIN LATERAL (
SELECT
royalty * sales_revenues.chain[1] AS sales_sales_asset_royalty,
user_type AS sales_sales_user_type
FROM
"sales_sales"
WHERE
(
sales_sales.id = sales_revenues.sale_id)
AND "sales_sales"."report_group_id" = 1
) sales_sales ON TRUE
LEFT JOIN exchange_rates exchange_rate ON
exchange_rate.key = concat_ws('-', 'EUR')
WHERE
"exchange_rate"."account_id" = 1;
ROLLBACK;
st 8. 1. 2025 v 17:10 odesílatel Josef Šimánek <
josef....@gmail.com> napsal:
> Tuto diskuzi najdete na adrese
https://groups.google.com/d/msgid/postgresql-cz/bb85baf1-fc77-4593-af3b-9d4f061c3fb1n%40googlegroups.com.