我有一张表包含以下内容:
我想要一个SQL查询来显示这些信息:
invoice id invoice type Sales Price
-----------------------------------------
1 s 500
2 p 400
3 s 300
我想在发票类型=' s'时加上(销售价格)。 - 总和(销售价格) 发票类型=' p'
在SQL Server中使用if或case
答案 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'
)是单引号。