使用case when的心得

2021-04-13 05:44:40 字數 722 閱讀 8607

今天看到了這樣乙個sql語句:

select   top   100   *   from   [#test]   order   by   (case   when   expire_date>=getdate()   then  0   else  1  end),   gold   desc,expire_date   desc  

剛開始我想這個sql語句最多兩個結果:

1:   selec top   100   *   from   [#test]   order   by   0,  gold   desc,expire_date   desc 

2:   selec top   100   *   from   [#test]   order   by   1,  gold   desc,expire_date   desc

但是我轉念一想: selec top   100   *   from   [#test]   order   by   0,  gold   desc,expire_date   desc 這條sql語句的語法有問題啊,根本執行不了阿,因為order by 後面至少是從1開始的。

在網上查了一些資料並且根據自己的理解終於明白了:

我們可以把(case   when   expire_date>=getdate()   then  0   else  1  end)看成乙個新字段,他的值除了0就是1,所以以他來排序的話,如果是0肯定就在最前面,如果是1肯定就是在最後面。

case when語句的使用

用一條sql語句將下面scales表內的資料,查詢為圖二形式 圖一 圖二 mysql select year 年,sum case when month 1 then scale else 0 end 一月,sum case when month 2 then scale else 0 end 二月...

case when的使用方法

第一種 格式 簡單case函式 格式說明 case 列名 when 條件值1 then 選項1 when 條件值2 then 選項2.else 預設值 end eg select case job level when 1 then 1111 when 2 then 1111 when 3 then...

Oracle中的case when的使用

今天要用sql實現乙個小小的邏輯,總之呢,需要用到一些判斷條件,所以準備使用一下 case when的用法,但是由於之前只寫過case when else end單條語句,沒有寫過巢狀,而且 感覺sql寫起來也不好除錯,所以在網上找了下資料。第一步,先寫乙個簡單的巢狀測試一下 select case...