Сопоставление двух столбцов в один столбец в Athena

#sql #case #presto #amazon-athena #sql-null

#sql #случай #presto #amazon-athena #sql-null

Вопрос:

У меня есть данные в Athena примерно так:

 | shop_id  | date        | provider | provider_new |  sales
| 123      | 2020-06-01  |     X    |              |   100
| 124      | 2020-07-01  |     Y    |              |   200
| 125      | 2020-08-01  |          |      Z       |   300
| 126      | 2020-09-01  |          |      T       |   400
  

Однако владелец таблицы изменил значение provider на provider_new . Таким образом, после 2020-08-01 поставщик возвращается к нулевому значению. Вот мой запрос:

 SELECT date,
         shop_id,
             
    CASE
    WHEN provider = 'X' THEN
    'X'
    WHEN provider = 'Y' THEN
    'Y'
    WHEN provider LIKE 'Z%' THEN
    'Z'
    WHEN provider LIKE 'T%' THEN
    'T'
    ELSE 'M'
    END AS provider_group,
         SUM(sales) AS sales
FROM X
GROUP BY  1, 2
  

Как я могу сопоставить эти два столбца с одним?

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

Ответ №1:

Вы хотите coalesce() ?

 coalesce(provider, provider_new)
  

coalesce() возвращает первое значение, не являющееся null значением из приведенных аргументов.

Комментарии:

1. Спасибо за ваш комментарий. Где добавить его в мой запрос? @GMB

2. @datazang: вы можете просто заменить каждое вхождение provider на coalesce(provider, provider_new) .