2017-04-15 53 views
-1

我有一个表包含以下总结:要使用if或使用情况

  • 发票编号
  • 发票类型
  • 销售价格

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

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

我想总结(销售价格)时,发票类型= 'S' - 总和(销售价格) 当发票类型= 'P'

使用if或case在SQL Server

+0

我怎样才能显示结果中的另一列? –

+0

我想要的结果 –

+0

我想要的结果当type ='s'所有销售价格的总和 - 当type ='p'所有销售价格的总和 –

回答

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 
0

你可以做到这一点在2个虚拟步骤:即是,选择你想要的记录,然后求和它们。

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

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

sq的在端部是一个表别名,只需要满足子查询的要求。

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

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