Постоянный набор результатов в конкретной области - PullRequest
0 голосов
/ 31 октября 2018

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

Допустим, у меня есть простая таблица с 4 полями: Продукт, Континент, Месяц, Продажи. Я хочу показать общий объем продаж для каждого продукта, континента, месяца, НО я всегда хочу показывать КАЖДЫЙ континент, независимо от того, были продажи в этом месяце или нет. Поэтому для каждой комбинации продукта и месяца я ВСЕГДА хочу перечислить 7 континентов.

Я пробовал различные соединения и CTE, но, похоже, я не могу найти правильную комбинацию, чтобы получить только нулевые значения на уровне континента.

Пример данных:

Product Continent   Month   Sales
A       Asia        SEP     ###
A       America     SEP     ###
A       Europe      OCT     ###
A       Africa      AUG     ###
A       Oceania     OCT     ###
B       Europe      SEP     ###
B       Africa      SEP     ###
C       America     AUG     ###
C       Oceania     AUG     ###
C       Asia        OCT     ###

Желаемый вывод:

Product Continent   Month   Sales
A       Asia        AUG 
A       America     AUG 
A       Europe      AUG 
A       Africa      AUG     ###
A       Oceania     AUG 
A       Asia        SEP     ###
A       America     SEP     ###
A       Europe      SEP 
A       Africa      SEP 
A       Oceania     SEP 
A       Asia        OCT 
A       America     OCT 
A       Europe      OCT     ###
A       Africa      OCT 
A       Oceania     OCT     ###
B       Asia        SEP 
B       America     SEP 
B       Europe      SEP     ###
B       Africa      SEP     ###
B       Oceania     SEP 
C       Asia        AUG 
C       America     AUG     ###
C       Europe      AUG 
C       Africa      AUG 
C       Oceania     AUG     ###
C       Asia        OCT     ###
C       America     OCT 
C       Europe      OCT 
C       Africa      OCT 
C       Oceania     OCT 

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете использовать cross join для генерации строк и left join для ввода значений:

select pm.product, pm.month, c.continent, d.sales
from (select distinct continent from data) c cross join
     (select distinct product, month from data) pm left join
     data d
     on d.continent = c.continent and
        d.product = pm.product and
        d.month = pm.month;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...