Sql 包括使用分组的所有仓库的所有产品总数

Sql 包括使用分组的所有仓库的所有产品总数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我通过以下查询获得每个仓库中每个产品的总数量: 选择 仓库、产品、金额(数量) 从 库存 按仓库、产品分组 这是我目前的结果: warehouse product San Fransisco iPhone 260 San Fransisco Samsung 300 San Jose iPhone 300 San Jose Samsung 350 我想包括每个仓库的产品总数。 这是我的预期输出:

我通过以下查询获得每个仓库中每个产品的总数量:

选择
仓库、产品、金额(数量)
从
库存
按仓库、产品分组
这是我目前的结果:

    warehouse       product 
    San Fransisco   iPhone  260
    San Fransisco   Samsung 300
    San Jose        iPhone  300
    San Jose        Samsung 350
我想包括每个仓库的产品总数。 这是我的预期输出:

    warehouse       product 
    San Fransisco   iPhone  260
    San Fransisco   Samsung 300
    San Fransisco   Total   560
    San Jose        iPhone  300
    San Jose        Samsung 350
    San Jose        Total   650
    All warehouses  Total   1210

一种方法使用
分组集

select warehouse, product, sum(quantity)
from inventory
group by grouping sets ( (warehouse, product), (warehouse), () );
假设:键中没有
NULL
值,您可以使用
coalesce()
获取总计:

select coalesce(warehouse, 'Total') as warehouse,
       (case when warehouse is not null
             then coalesce(product, 'Total')
        end) as product,
       sum(quantity)
from inventory
group by grouping sets ( (warehouse, product), (warehouse), () );
产品
很棘手,因为有时它是
空的
,有时是
总数
,有时是
产品

查看或
汇总
select coalesce(warehouse, 'Total') as warehouse,
       (case when warehouse is not null
             then coalesce(product, 'Total')
        end) as product,
       sum(quantity)
from inventory
group by grouping sets ( (warehouse, product), (warehouse), () );