2017-04-15 48 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')另一方面是單引號。