SQL Server進階內容之case文法函數概述及使用

來源:互聯網
上載者:User

1.Case函數的用法
(1)使用類似:switch-case與if-else if。
(2)文法:
    case [欄位]
      when 運算式 then 顯示資料
      when 運算式 then 顯示資料
      else 顯示資料
    end
(3)百分制轉換素質教育
1)我們要將顯示的資料轉換成ABCDE,規則是90分以上顯示A,80分以上顯示B,以此類推。
    

2)執行的SQL語句是:

複製代碼 代碼如下:      Select ID,TestBase,
      Case
        When testBase>=90 then ‘A'
      When testBase>=80 then ‘B'
        When testBase>=70 then ‘C'
        When testBase>=60 then ‘D'
         Else ‘E' end as testBaseLevel,
    testBeyond,testDate from Score

3)最後的執行結果: 

(4)注意:
    1)寫case對應的就寫上end。
    2)end後面跟別名(case與end之間相當於一個欄位(對象))
(5)和C#的switch-文法作比較
1)C#
      Switch(變數)
      {
        Case 常量1:結果1;break;
        Case 常量2:結果2;break;
        Default :預設結果;break;
      }
2) SQL
      SQL文法我在上面寫了,可以對比看一下。
(6)對應的if-else if文法
    1) C#
      If(運算式1) {結果1;}
      else if(運算式2) {結果2;}
      else {預設結果;}
    2)SQL Server
      case
        when 運算式1 then 顯示1
        when 運算式2 then 顯示2
        else 預設顯示
      end
3)舉例說明,如果我們存放性別的時候在資料庫中是用f,m標識的,現在我們想要用男女標識,SQL語句如下:

複製代碼 代碼如下:       Select ID,Name,stuSex,
        case
          when stuSex='m' then ‘男'
          when syuSex='f' then ‘女'
          else ‘其它'
        end as stuSexType,
      stuDate from Student。

(7)練習案例:
1)在資料庫中執行這段代碼: 複製代碼 代碼如下:      use Test
      go
      create table PracticeTest
      (
        number varchar(10),
        amount int
      )
      insert into PracticeTest(number,amount) values('RK1',10)
      insert into PracticeTest(number,amount) values('RK2',20)
      insert into PracticeTest(number,amount) values('RK3',-30)
      insert into PracticeTest(number,amount) values('RK4',-10)

2)實現的效果如下:
    

3)可以看出,首先select中應該有三個欄位,並且將資料大於0的放到收入中,那麼另一個為0,並且將小於0的放到支出裡面,另一個為0,下面我們寫實現的SQL語句:

複製代碼 代碼如下:       select number as 單號,
        case
          when amount>0 then amount
          else 0
        end as 收入,
        case
          when amount<0 then -amount
          else 0
        end as 支出
      from PracticeTest

(8)一道面試題的練習:

1)我們寫出下面執行的代碼,資料庫大家自己建或者我在下面附加指令碼了,大家製藥執行一下即可:

      

2)執行的SQL語句:

複製代碼 代碼如下:  create table Score
      (
        學號 nvarchar(10),
        課程 nvarchar(10),
        成績 int
      )
      insert into Score values('0001','語文',87)
      insert into Score values('0002','數學',79)
      insert into Score values('0003','英語',95)
      insert into Score values('0004','語文',69)
      insert into Score values('0005','數學',84)

3)實現功能的SQL語句的書寫複製代碼 代碼如下:        select 學號,sum(
        case
          when 課程='語文' then 成績
          else 0
        end) as 語文,sum(
        case
          when 課程='數學' then 成績
          else 0
        end) as 數學,sum(
        case
          when 課程='英語' then 成績
          else 0
        end) as 英語
      from score group by 學號

相信自己,你就是下一個奇蹟!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.