我正在使用具有半 - "图形"基于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放入所有成员的总和,但随后我被卡住了。
答案 0 :(得分:1)
假设只有一个深度级别,您可以使用coalesce()
:
select coalesce(ProductMaster, Product) as ProductMaster, sum(Quantity)
from t
group by coalesce(ProductMaster, Product);
注意:这假定空白表示NULL
。如果它意味着其他内容,那么您需要CASE
代替COALESCE()
。