首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL CASE WHEN 條件查詢實戰:學生成績等級分類完整範例

     編輯:關於SqlServer

場景

將數值分數轉換為等級標籤(優秀/及格/不及格),CASE WHEN 是標準 SQL 做法,跨資料庫通用。

建表與測試資料

CREATE TABLE result (
    stu_id VARCHAR(20) NOT NULL,
    china  DECIMAL(5,2),
    math   DECIMAL(5,2),
    english DECIMAL(5,2)
);

INSERT INTO result VALUES ('0001', 60, 20, 80);
INSERT INTO result VALUES ('0002', 80, 60, 80);
INSERT INTO result VALUES ('0003', 20, 85, 80);

條件查詢語句

SELECT 
    stu_id,
    CASE 
        WHEN china > 80 THEN '優秀'
        WHEN china >= 60 THEN '及格'
        ELSE '不及格'
    END AS 語文,
    CASE 
        WHEN math > 80 THEN '優秀'
        WHEN math >= 60 THEN '及格'
        ELSE '不及格'
    END AS 數學,
    CASE 
        WHEN english > 80 THEN '優秀'
        WHEN english >= 60 THEN '及格'
        ELSE '不及格'
    END AS 英語
FROM result;

執行結果

stu_id語文數學英語
0001及格不及格優秀
0002優秀及格優秀
0003不及格優秀優秀

進階技巧

  • 簡單 CASE:CASE col WHEN val1 THEN ... WHEN val2 THEN ... ELSE ... END 適用等值判斷
  • 巢狀 CASE:可在 THEN/ELSE 中嵌套另一個 CASE
  • 配合聚合:SUM(CASE WHEN condition THEN 1 ELSE 0 END) 實現條件計數
  • NULL 處理:WHEN col IS NULL THEN ... 需顯式判斷,col = NULL 永遠為 UNKNOWN

跨資料庫備註

  • SQL Server / PostgreSQL / MySQL 8.0+ / Oracle:標準語法一致
  • Oracle 早期版本亦支援,但建議用 DECODE 兼容舊版
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved