Фильтр BigQuery, если столбец имеет определенное значение, то сводные результаты - PullRequest
0 голосов
/ 26 марта 2020

Я хочу отфильтровать по EnterpriseNumber, в котором есть строка ContactType TEL.
Затем я хочу повернуть таблицу, чтобы значения TEL и EMAIL отображались в столбце

| EnterpriseNumber | Denomination     | ContactType | Value                |
|------------------|------------------|-------------|----------------------|
| 900              | Jonas            | null        | null                 |
| 900              | Jonas            | null        | null                 |
| 750              | Marie            | TEL         | 111000               |
| 750              | Marie            | EMAIL       | 750@domain.com       |
| 500              | Jimmy            | TEL         | 333000               |
| 400              | Johanna          | EMAIL       | 500@domain.com       |

Результат, который я хочу:

| EnterpriseNumber | Denomination     | TEL    | EMAIL                |
|------------------|------------------|--------|----------------------|
| 750              | Marie            | 111000 | 750@domain.com       |    
| 500              | Jimmy            | 333000 | null                 |     

Мне действительно трудно это сделать, я знаю, что мне, вероятно, нужно использовать функцию PIVOT, но я не мог заставить ее работать. Надеюсь, вы можете помочь мне!

1 Ответ

1 голос
/ 26 марта 2020

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

select enterprisenumber, denomination,
       max(case when contacttype = 'TEL' then value end) as telephone,
       max(case when contacttype = 'EMAIL' then value end) as email
from t
group by 1, 2;

Я не уверен, почему вы отфильтровываете первого человека. Для этого вы можете использовать предложение where или having. Возможно:

where contacttype is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...