我正在使用 SQL 查询生成以下结果。 我在数据库的一个表中有大约十种产品,我在另一个表中也有销售。
我的产品有一些特殊的属性。
我构建了一个查询来获取所有这些产品的销售额,但必须对它们进行分类。我使用了很多 Sum,到目前为止效果很好。 当我要求小计时,问题就开始了。这让我很困惑,我无法得到正确的结果。
米 到目前为止,我的查询是这样的,
Select it.itemdescription as item
,it.vatpercent as vat
,sum(it.AQty) as firstquant
,sum(it.bQty) as secquant
,itm.userdefnum02 as volume
,itm.userdefnum01 as [alc%]
,(itm.userdefnum02*itm.USERDEFNUM01*(sum(it.aQty))) as alclit
,(12.25*itm.userdefnum02*itm.USERDEFNUM01*(sum(it.aQty))) as tax
,itm.HEUSERDEFBOOL01 as flag
From centlines it
inner join items itm on itm.code=it.itemcode
inner join commercialentries ce on ce.dentid=it.dentid
group by itm.userdefnum01,it.vatpercent,itm.userdefbool01 ,it.itemdescription,itm.userdefnum02,ITM.code
现在我想要启用标志且具有相同“alc%”和相同“vat”的产品小计。
这可能吗?
我的查询很大,所以我只是更改它以向您展示我尝试完成的内容。
看起来你需要
GROUPING SETS
select
it.itemdescription as item
,it.vatpercent as vat
,sum(it.AQty) as firstquant
,sum(it.bQty) as secquant
,itm.userdefnum02 as volume
,itm.userdefnum01 as [alc%]
,itm.userdefnum02 * itm.USERDEFNUM01 * sum(it.aQty) as alclit
,itm.userdefnum02 * itm.USERDEFNUM01 * sum(it.aQty) * 12.25 as tax
,itm.HEUSERDEFBOOL01 as flag
from centlines it
inner join items itm on itm.code = it.itemcode
inner join commercialentries ce on ce.dentid = it.dentid
group by grouping sets (
(itm.HEUSERDEFBOOL01, it.vatpercent, it.itemdescription, itm.userdefnum01, itm.userdefnum02),
(itm.HEUSERDEFBOOL01, it.vatpercent, itm.userdefnum01)
);