Добро пожаловать в сообщество. Прежде всего, пожалуйста, не размещайте изображения, с ними бесполезно работать, а в некоторых случаях они запрещены и не могут быть просмотрены. Вместо этого используйте форматированный текст. Я не очень много использовал функциональность кросс-таблицы, но она предлагает вторую версию, которая содержит 2 запроса, второй - первый. Однако в опубликованном запросе есть пара ошибок, которые необходимо исправить в любом случае. Так что сначала. Ищите - << тег. </p>
with checked_adgroup AS (
SELECT
ua.new_adgroup,
ua.account,
ua.campaign,
ua.ad_group,
ua."position",
cp.category,
pt.full_value,
--<< missing column or ending , above should not be there, assumption missing column see below.
FROM unnest_adgroup ua
LEFT JOIN taxonomy_category cp ON ua."position" = cp."position"
LEFT JOIN taxonomy pt ON ua.short_val = pt.short_value AND cp.category = pt.category AND (pt.lob IS NULL OR pt.lob = ua.lob)
)
SELECT *
from crosstab(
'select
cad.account,
cad.campaign,
cad.ad_group,
cad.category,
cad.full_value
FROM checked_adgroup cad
WHERE cad.all_correct AND cad.category IS NOT NULL
--<< above line has 2 errors:
--<< Incorrectly formatted needs to cad.all_correct is not null AND cad.category IS NOT NULL
--<< column cad.all_correct does not exist (see missing column above
ORDER BY 1,2,3')
AS final_result(
account text, campaign text, ad_group text,
division text, lob text, match_type text);
Теперь нам нужно преобразовать CTE во второй запрос, который кросс-таблица могла бы использовать. Я идентифицировал каждого с Postgres $ Quoting $, не столько по необходимости, сколько стандартной строковой кавычки (') было бы достаточно, но больше по видимости.
select *
from crosstab(
$ct1$select
account,
campaign,
ad_group,
category,
full_value
--<< from checked_adgroup cad
--<< where cad.all_correct and cad.category is not null
--<< moved above lines to second query to avoid reference and removed qualification
order by 1,2,3
$ct1$
, $ct2$select *
from (
select
ua.new_adgroup,
ua.account,
ua.campaign,
ua.ad_group,
ua."position",
cp.category,
pt.full_value,
'mssing from orig posted query' all_correct
from unnest_adgroup ua
left join taxonomy_category cp on ua."position" = cp."position"
left join taxonomy pt on ua.short_val = pt.short_value
and cp.category = pt.category
and (pt.lob is null or pt.lob = ua.lob)
) s
where all_correct is not null and cad.category is not null
--<< move from query1
$ct2$ )
as final_result(
account text, campaign text, ad_group text,
division text, lob text, match_type text );
Но на этом этапе я получаю сообщение об ошибке unnest_adgroup не существует. Что верно, поскольку вы не опубликовали определение, а не другие ссылочные таблицы. Но это означает, что синтаксис правильный. По общему признанию, это может быть далеко от базы, если это так, так и быть, я всегда могу удалить позже. Но я застрял дома без других проектов в данный момент, и это кажется интересным вопросом. Ждем результатов. Удачи.