我有一个销售交易数据库,其中包含由唯一的销售号码识别的多个商品的销售情况。在salenum领域。某些销售是应纳税的,并由代码字段标识,其值为“T'”。未纳税的销售只是省略了“T'值表示这是一项非纳税交易。
QUANTITY PARTN COST PRICE CODE SALENUM
3 SAS6895 2.38 9.99 D 411436
1 GELBKP 7.4458 11.5409 D 411436
3 BRW.5 0.1471 0.228 D 411436
1 GWG 24.5668 45.00 D 411436
1 MODC4 1.3767 3.5 D 411436
1 GPFQ 6.9969 10.8451 D 411436
1 Tax 6.605 6.605 T 411436
1 OTC 0.4144 0.99 D 411437
1 S777 1.71 2.6505 D 411437
在salnumber系列411436中,代码T显示该销售已征税。 salenumber 411437省略了T所以这是一个豁免销售。
我想要做的是查询表格并将按salenumber分组的交易总结为应税销售额,然后将另一个显示豁免销售额的查询求和。
select sum(quantity*price) as total from business where date = '8/28/2014'
group by salenum
会显示两种类型,但我无法通过Tax过滤我认为这可以通过子查询完成,但我现在在语法上丢失了。
感谢高级
PS,我研究了如何清楚地陈述我的问题的帮助部分,所以反馈将会受到赞赏,所以我可以成为这个论坛的更好成员
答案 0 :(得分:1)
如果您想要两行,一个用于纳税,一个用于非应税,那么您可以使用两个级别的聚合。例如,要将结果放在两个不同的行上:
select IsTaxable, sum(sumqp)
from (select salenum, sum(quantity * price) as sumqp,
max(case when code = 'T' then 1 else 0 end) as IsTaxable
from transactions t
group by salenum
) t
group by IsTaxable;
答案 1 :(得分:0)
也可以将两个值计算为两列
select salenum, sum(CASE code WHEN 'T' THEN quantity * price ELSE 0 END) as TaxedAmount,
sum(CASE code WHEN 'D' THEN quantity * price ELSE 0 END) as NoTaxedAmount
from transactions t
group by salenum