我无法在 sql server 中进行汇总以按我的意愿工作

问题描述 投票:0回答:1

我正在使用 SQL 查询生成以下结果。 我在数据库的一个表中有大约十种产品,我在另一个表中也有销售。

我的产品有一些特殊的属性。

  1. 有一个标志用于将产品分组为 SMALLV 和 BIGV。标志只是真或假
  2. 另一个决定每种产品中酒精含量的数值变量。它是十进制的,值为 0.40 或 0.42
  3. 另一个保存产品体积的数值变量。它采用不同的值 0.05 或 0.10 或 0.20 或 1 或 5 。这些是升。

我构建了一个查询来获取所有这些产品的销售额,但必须对它们进行分类。我使用了很多 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”的产品小计。

这可能吗?

我的查询很大,所以我只是更改它以向您展示我尝试完成的内容。

sql sql-server rollup
1个回答
0
投票

看起来你需要

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)
);
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.