今天看到了這樣乙個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...