РЕДАКТИРОВАТЬ: ВЫХОД требует также максимального значения даты в случае, если «dt» имеет разные значения для разных «dis_code». Я добавил max (dt) к утвержденному ответу, но это не решает проблему.
Моя таблица выглядит следующим образом:
Cust_id Trtmnt_cd dt dis_code
A A123 2019-01-15 SENT
A A123 2019-01-16 OPEN
A A123 2019-01-20 CLICK
Мой код:
select a.cust_id,a.trtmnt_cd,max(A.offr_proposed),max(B.cust_response)
FROM
(SELECT a.cust_id,a.trtmnt_cd,
case when trim(a.dis_code) in ('SENT') then 1 else 0 end as offr_proposed
FROM tbl1 a
group by cust_id,a.trtmnt_cd,a.dis_code) A
inner join
(SELECT b.cust_id,b.trtmnt_cd,
case when trim(b.dis_code) in ('OPEN','CLICK') then 1 else 0 end as cust_response
FROM tbl1 b
group by b.cust_id,b.trtmnt_cd,b.disp_code) B
On (A.cust_id = B.cust_id and A.trtmnt_cd = B.trtmnt_cd)
group by A.cust_id,A.trtmnt_cd,A.offr_proposed,B.cust_response
Вывод вышеуказанного запроса:
Cust_Id trtmnt_cd offr_proposed cust_response
A A123 1 0
A A123 1 1
Desired Output:
Cust_Id trtmnt_cd dt offr_proposed cust_response
A A123 2019-01-20 1 1
По сути, я хочу одну уникальную строку данных для каждого клиента, которая сообщает мне, было ли отправлено предложение (1 или 0), и ответ на запрос это предложение (1 или 0). Таблица текущих данных имеет несколько строк для каждого события предложения, т. Е. (1 строка для отправленной, другая для открытой, и т. Д. c).
Пожалуйста, помогите мне исправить мой код.