显示包含所有可能维度的多维数据集PostgreSQL结果

显示包含所有可能维度的多维数据集PostgreSQL结果,postgresql,cube,Postgresql,Cube,我使用以下查询获取数据透视表的多维数据集结果: SELECT client, shop, SUM (sales) FROM sales GROUP BY CUBE (client, shop) ORDER BY client, shop; 并获得一个输出: client shop sales null null 1000 null Shop A 400 null

我使用以下查询获取数据透视表的多维数据集结果:

SELECT
    client,
    shop,
    SUM (sales)
FROM
    sales
GROUP BY
    CUBE (client, shop)
ORDER BY
    client,
    shop;
并获得一个输出:

client     shop       sales
null       null        1000
null       Shop A       400
null       Shop B       600
Client A   null         800
Client A   Shop A       200
Client A   Shop B       600
Client B   null         200
Client B   Shop A       200
请注意,客户B仅向A店销售

但我需要一个输出(添加最后一行),其中输出显示维度中所有可能的交点(客户、商店)。如何更改我的查询

client     shop       sales
null       null        1000
null       Shop A       400
null       Shop B       600
Client A   null         800
Client A   Shop A       200
Client A   Shop B       600
Client B   null         200
Client B   Shop A       200
Client B   Shop B      null

您需要查询
client
shop
的笛卡尔积,并与表左键连接:

select 
    client, 
    shop, 
    sum(sales)
from (
    select distinct client 
    from sales
    ) c
cross join (
    select distinct shop 
    from sales
    ) s
left join 
    sales t using (client, shop)
group by 
    cube(client, shop)
order by 
    client, shop;

  client  |  shop  | sum  
----------+--------+------
 Client A | Shop A |  200
 Client A | Shop B |  600
 Client A |        |  800
 Client B | Shop A |  200
 Client B | Shop B |     
 Client B |        |  200
          | Shop A |  400
          | Shop B |  600
          |        | 1000
(9 rows)        

如果您的客户和商店存储在其他表中,您可以使用这些表,而不是
selectdistinct
CROSS-JOIN
s。