說來慚愧,自從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
它生成的結果集以每個客戶的訂單按處理狀態分類統計。