такой код ?
WITH super_with as (
with
table_1 as (
-- ННЭ 2021
SELECT distinct name_strana_p as "Страна", round(sum(stoim)::numeric/1000000, 2) AS "млн.$",
EXTRACT(YEAR FROM period_date) as "Год"
FROM data_fts_med02_rp4247
WHERE napr = 'ЭК' and period_date >= '2021-01-01' and period_date <= '2021-12-01'
GROUP BY name_strana_p, "Год"
ORDER BY "млн.$"
DESC LIMIT 10
),
table_2 as (
-- ННЭ 2020
SELECT distinct name_strana_p as "Страна", round(sum(stoim)::numeric/1000000, 2) AS "млн.$",
EXTRACT(YEAR FROM period_date) as "Год"
FROM data_fts_med02_rp4247
WHERE napr = 'ЭК' and period_date >= '2020-01-01' and period_date <= '2020-02-01'
GROUP BY name_strana_p, "Год"
ORDER BY "млн.$"
DESC LIMIT 10
)
select * from super_with;
так нельзя, если нужны все строки table1 и 2, то select * from table_1 union all select * from table_2 если этот результат нужно обернуть в cte, то создать table_3 с кодом выше
Юнионы - зло, нет?
в рамках поставленного вопроса это единственный вариант.. переписывание выражений внутри предоставленных cte я не рассматривала
Алина, сработало! Который раз мне помогли)) Спасибо!!! 👍
☺️ пожалуйста) Но тут верно заметили, что union-ов лучше избегать, если это возможно , ваши cte, кажется, можно объединить в одну)
не зло, если понимать зачем
Ознакомлюсь с cte, еще раз спасибо!!!
я бы еще добавил что не надо путать UNION ALL и просто UNION
Обсуждают сегодня