想要使用if或者使用case来总结

时间:2017-04-15 11:36:58

标签: sql-server if-statement case

我有一张表包含以下内容:

  • 发票ID
  • 发票类型
  • 销售价格

我想要一个SQL查询来显示这些信息:

invoice id    invoice type    Sales Price   
-----------------------------------------
1                  s              500
2                  p              400
3                  s              300

我想在发票类型=' s'时加上(销售价格)。 - 总和(销售价格) 发票类型=' p'

在SQL Server中使用if或case

2 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

select sum(
           case
               when invoice_type = 's' then sales_price
               when invoice_type = 'p' then sales_price * -1
               else null
           ) as NetSales
from MyTable

答案 1 :(得分:0)

您可以通过2个虚拟步骤完成:即,选择所需的记录,然后对它们求和。

这很容易做到的是子查询如下:

SELECT sum("Sales Price")
FROM (SELECT "Sales Price" FROM whatever WHERE "invoice type"='p') sq;

最后的sq是一个表别名,只有满足子查询的要求才是必需的。

顺便说一下,您可能会意识到列名中的空格会导致问题。我用双引号(")括起了有问题的列名,这是标准的。 MSSQL也使用方括号表示法,但双引号更好。

另一方面,字符串('p')是单引号。