特定字段中的永久结果集

rbpvctlc  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(366)

我确信这是很明显的,但我正在努力找出正确的单词组合来正确搜索…所以,如果之前有人问过这个问题,我深表歉意。
假设我有一个简单的表,有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
xfb7svmp

xfb7svmp1#

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

相关问题