不同行的总和

时间:2017-01-25 20:02:41

标签: sql sql-server

我正在使用具有半 - "图形"基于SQL的报告编写者。

我们的软件工作方式是产品可以是" Masters"或"会员" (或两者都没有,但现在让我们忽略它)。基本上,产品可以是父母"一群人或一个孩子"另一个产品组。所以说你有下表:

|---------------------|------------------|------------------|
|       Product       |   ProductMaster  |     Quantity     |
|---------------------|------------------|------------------|
|          A          |                  |        200       |
|---------------------|------------------|------------------|
|          A1         |         A        |        50        |
|---------------------|------------------|------------------|
|          A2         |         A        |        50        |
|---------------------|------------------|------------------|
|          A3         |         A        |        25        |
|---------------------|------------------|------------------|

产品A是Master,其他是A.的成员。

我想要做的是每个产品有一行,它结合了Masters和所有成员的数量(在这种情况下,一行有Quantity = 325),我无法弄清楚如何去做吧。我可以通过将Group By ProductMaster放入所有成员的总和,但随后我被卡住了。

1 个答案:

答案 0 :(得分:1)

假设只有一个深度级别,您可以使用coalesce()

select coalesce(ProductMaster, Product) as ProductMaster, sum(Quantity)
from t
group by coalesce(ProductMaster, Product);

注意:这假定空白表示NULL。如果它意味着其他内容,那么您需要CASE代替COALESCE()