SQL SUM和CASE

时间:2014-05-09 02:09:45

标签: sql sum case

我有一个LineItem表。

InvoiceNo   ApplyTax(bool)   Subtotal  
1              1                10
1              0                10  
1              1                10 
2              0                10
2              1                10

应用税意味着将另外7%添加到小计

我需要一个返回的select语句。

InvoiceNo     Total
1              31.4 ----(10* 1.07 + 10 + 10*1.07)
2              20.7 ----(  10* 1.07 + 10) 

我可以想出这个,但它给出了语法错误。

SELECT InvoiceNo ,SUM(( select case(ApplyTax) WHEN 1 THEN 1.07 ELSE 1)*subtotal) 
From InvoiceTable
Group By InvoiceNo 

我错过了一些非常简单的事情吗?我无法做到对。

2 个答案:

答案 0 :(得分:1)

这是正确的语法:

SELECT InvoiceNo, SUM((case ApplyTax WHEN 1 THEN 1.07 ELSE 1 end)*subtotal) 
From InvoiceTable
Group By InvoiceNo ;

请注意,没有嵌套的select语句,caseend结尾。

答案 1 :(得分:0)

END放在CASE声明的末尾..

SELECT inv ,SUM(( select case(ApplyTax) WHEN 1 THEN 1.07 ELSE 1 END)*subtotal) as total
From test 
Group By inv 
相关问题