Salesforce Marketing Cloud SQL PIVOT - PullRequest
       49

Salesforce Marketing Cloud SQL PIVOT

1 голос
/ 08 ноября 2019

Я пытаюсь создать свод в SFMC, чтобы объединить несколько строк в один столбец. Запрос выполняется успешно, но не заполняется правильно. Моя таблица имеет 2 столбца: адрес электронной почты и product_sku. Каждый адрес электронной почты появляется в таблице 3 раза, рядом с ним указывается другой product_sku. Я хочу, чтобы выходные данные имели уникальный адрес электронной почты, с 3 product_skus

Пример файла:

Email |product_sku
test@test.com |12314321131412
test@test.com |45353643645
test@test.com |0953242425352

Пример желаемого вывода:

email |product_sku_header_1 |product_sku_header_2 |product_sku_header_3
---------------------------------------------------------------------------------test@test.com |12314321131412 |45353643645 |0953242425352

Мой запрос:

select
email
, sum(case when product_sku ='%' then 1 else 0 end) as product_sku_header_1
, sum(case when product_sku ='%' then 1 else 0 end) as product_sku_header_2
, sum(case when product_sku ='%' then 1 else 0 end) as product_sku_header_3
FROM data_extension
group by 
email

Заранее спасибо!

1 Ответ

1 голос
/ 08 ноября 2019

Вы можете использовать row_number() для условного агрегирования:

select email,
       max(case when seqnm = 1 then product_sku end) as  product_sku_header_1,
       max(case when seqnm = 2 then product_sku end) as  product_sku_header_2,
       max(case when seqnm = 3 then product_sku end) as  product_sku_header_3
from (select de.*,
             row_number() over (partition by email order by product_sku) as seqnum
      from data_extension de
     ) de
group by email;
...