Объединение двух одинаковых запросов, но из разных схем - PullRequest
0 голосов
/ 02 мая 2018

Я выполняю запрос в Таблице, чтобы получить данные электронной почты из нескольких разных таблиц. Прямо сейчас это работает и дает результаты. Данные в красном смещении.

QUERY 1

WITH activities AS (
SELECT A.lead_id, A.primary_attribute_value_id, T.name, A.activity_date
FROM marketo_sc.lead_activities A, marketo_sc.lead_activity_types T
WHERE T.name IN ('Send Email', 'Email Delivered', 'Open Email', 'Click Email', 'Unsubscribe Email') AND A.activity_type_id=T.id 
GROUP BY A.lead_id, A.primary_attribute_value_id, T.name, A.activity_date
),
totals AS (
SELECT A.name AS activity_t, E.subject AS subject, E.name AS email, A.activity_date , count(*)
FROM activities A, marketo_sc.emails E
WHERE A.primary_attribute_value_id = E.id AND E.name LIKE '%Bounceback%'
GROUP BY email, activity_t, subject, A.activity_date
)
SELECT email, subject, 'sc' as program, activity_date,
sum(case when activity_t='Send Email' then count else 0 end) AS sent,
sum(case when activity_t='Email Delivered' then count else 0 end) AS delivered,
sum(case when activity_t='Open Email' then count else 0 end) AS opened,
sum(case when activity_t='Click Email' then count else 0 end) AS clicked,
sum(case when activity_t='Unsubscribe Email' then count else 0 end) AS unsubscribed
FROM totals
GROUP BY email, subject, activity_date

Однако у меня есть другая таблица с точно такой же настройкой

QUERY 2

WITH tgactivities AS (
SELECT A.lead_id, A.primary_attribute_value_id, T.name, A.activity_date
FROM marketo_tg.lead_activities A, marketo_tg.lead_activity_types T
WHERE T.name IN ('Send Email', 'Email Delivered', 'Open Email', 'Click Email', 'Unsubscribe Email') AND A.activity_type_id=T.id 
GROUP BY A.lead_id, A.primary_attribute_value_id, T.name, A.activity_date
),
tgtotals AS (
SELECT A.name AS activity_t, E.subject AS subject, E.name AS email, A.activity_date , count(*)
FROM tgactivities A, marketo_tg.emails E
WHERE A.primary_attribute_value_id = E.id AND E.name LIKE '%Bounceback%'
GROUP BY email, activity_t, subject, A.activity_date
)
SELECT email, subject, 'tg' as program, activity_date,
sum(case when activity_t='Send Email' then count else 0 end) AS sent,
sum(case when activity_t='Email Delivered' then count else 0 end) AS delivered,
sum(case when activity_t='Open Email' then count else 0 end) AS opened,
sum(case when activity_t='Click Email' then count else 0 end) AS clicked,
sum(case when activity_t='Unsubscribe Email' then count else 0 end) AS unsubscribed
FROM tgtotals
GROUP BY email, subject, activity_date

Я пытался сделать UNION между ними, но я получил синтаксическую ошибку

[Amazon] [RedShift ODBC] (30) Произошла ошибка при попытке выполнить запрос: ОШИБКА: синтаксическая ошибка в или около «WITH» ЛИНИЯ 26: WITH tgactivities AS (^

Любая Помощь или идеи о том, почему это может происходить?

1 Ответ

0 голосов
/ 02 мая 2018
SELECT email, subject, 'tg' as program, activity_date,
sum(case when activity_t='Send Email' then [count] else 0 end) AS sent,
sum(case when activity_t='Email Delivered' then [count] else 0 end) AS delivered,
sum(case when activity_t='Open Email' then [count] else 0 end) AS opened,
sum(case when activity_t='Click Email' then [count] else 0 end) AS clicked,
sum(case when activity_t='Unsubscribe Email' then [count] else 0 end) AS unsubscribed
FROM (SELECT A.name AS activity_t, E.subject AS subject, E.name AS email, A.activity_date , count(*) [count]
FROM (SELECT A.lead_id, A.primary_attribute_value_id, T.name, A.activity_date
FROM marketo_tg.lead_activities A, marketo_tg.lead_activity_types T
WHERE T.name IN ('Send Email', 'Email Delivered', 'Open Email', 'Click Email', 'Unsubscribe Email') AND A.activity_type_id=T.id 
GROUP BY A.lead_id, A.primary_attribute_value_id, T.name, A.activity_date) A, marketo_tg.emails E
WHERE A.primary_attribute_value_id = E.id AND E.name LIKE '%Bounceback%'
GROUP BY email, activity_t, subject, A.activity_date)b
GROUP BY email, subject, activity_date
...