1. 程式人生 > >sql語句 之 CASE WHEN 搜尋語句

sql語句 之 CASE WHEN 搜尋語句

今天查詢資料庫時遇到一個問題,一個表中存了三種不同狀態的的記錄,即倉庫日誌表裡存了 領出,報廢,歸還三個狀態的欄位,而我需要做的操作是統計出一個人的領用總數量,報廢總數量,和歸還總數量,自己用了很多種方法,但都行不通,最後還是大神提供了case when語句才得以解決,所以寫下這篇日誌得以記錄以便不時之需;

case when 聽起名字就知道,應該和switch 語句差不多;所以他的一般格式為:

case  

    when  列名= 條件值1   then  選擇項1

    when  列名=條件值2    then  選項2.......

    else    預設值 end

你可以在 then 後面寫任何值,當然你也可以用表中的欄位 作為選項,我寫的是多重 查詢語句;

select UID,UNAME,sum(LingChuNum)as LCNUM,sum(BaoFeiNum)as BFNUM,sum(GuiHuanNum)as GHNUM FROM
(
  select uid ,uname,
  case when Type=1 then OutNum else 0 end as LingchuNum,
  case when Type=2 then OutNum else 0 end as BaoFeiNum,
  case when Type=3 then OutNum else 0 end as GuiHuanNum,
  from WareHouseLogList where UID=1 and Wcode=‘1001’

)t group by(UID,UNAME )