特定领域的永久性结果

时间:2018-10-31 11:38:03

标签: mysql sql

我敢肯定,这确实很明显,但是我想尽办法找出正确的单词组合以正确搜索。...因此,很抱歉,以前是否有人问过这个问题。

所以说我有一个包含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 :(得分:0)

您可以使用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;