Firebird的Case表達式功能
2024-07-21 02:06:18
供稿:網友
 
    說來慚愧,自從fb1.5出來以后,一直沒有顧上很深入的挖掘它的新功能,只是當它是ib的一個延續來對待——只要能平滑移植,就算ok。
說來慚愧,自從fb1.5出來以后,一直沒有顧上很深入的挖掘它的新功能,只是當它是ib的一個延續來對待——只要能平滑移植,就算ok。
    前兩天才發現,firebird 1.5.2里,已經支持了case 表達式。在我看來,這是關系型數據庫中一個相當重要的功能,因為利用case,可以生成強大的數據透視表——這個東西好像在excel等電子表格里有個專門的名字,忘了是啥了。但它絕對是一種非常有用的功能。當然,我們可以用電子表格軟件實現這個功能,但是會帶來額外的網絡通訊負擔,其計算效率也差很多。
以下是利用fb的demo數據庫employee編寫的一個透視表示例:
select cust_no
      ,sum(case when order_status = 'shipped' then 1 else 0 end) as shipped
      ,sum(case when order_status = 'open' then 1 else 0 end) as open
      ,sum(case when order_status = 'waiting' then 1 else 0 end) as waiting
from sales
group by cust_no
它生成的結果集以每個客戶的訂單按處理狀態分類統計。
,因為利用case,可以生成強大的數據透視表——這個東西好像在excel等電子表格里有個專門的名字,忘了是啥了。但它絕對是一種非常有用的功能。當然,我們可以用電子表格軟件實現這個功能,但是會帶來額外的網絡通訊負擔,其計算效率也差很多。
以下是利用fb的demo數據庫employee編寫的一個透視表示例:
select cust_no
      ,sum(case when order_status = 'shipped' then 1 else 0 end) as shipped
      ,sum(case when order_status = 'open' then 1 else 0 end) as open
      ,sum(case when order_status = 'waiting' then 1 else 0 end) as waiting
from sales
group by cust_no
它生成的結果集以每個客戶的訂單按處理狀態分類統計。
菜鳥學堂: