關於SQL的case when魅力

2021-05-25 16:56:28 字數 1436 閱讀 8286

最近去面試碰到了兩道關於資料庫的筆試題目:

1:有member表(m_id  int,m_*** varchar(20))其中m_***有三個不同值('男','女','null'),

要求用一條sql語句把member表的m_***字段更新成m_***的值('男')變成'女',

'女'變成'男','null'不變;

答:update member

set m_*** =case m_*** when '女' then '男' when '男' then '女' else 'null'

end

2:有一張表table1,有三個字段分別是:年度,季度,數量;現在資料如下:

年度,季度,數量

1991    1        23

1991    2        32

1991    3        15

1991    4        20

1992    1        25

1992    2       65

要求用一條sql語句查出結果為:

年份  1季度  2季度  3季度  4季度

1991    23        32       15        20

1992    25        65        0         0

答:select b.year as '年份',sum(b.quarter1) as '1季度',sum(b.quarter2) as '2季度',

sum(b.quarter3) as '3季度',sum(b.quarter4) as '4季度' from(

select a.year,

case a.quarter when 1 then a.nums else 0 end as quarter1,

case a.quarter when 2 then a.nums else 0 end as quarter2,

case a.quarter when 3 then a.nums else 0 end as quarter3,

case a.quarter when 4 then a.nums else 0 end as quarter4

from table1 as a)b

group by b.year

乙個 關於 case when的SQL

例 從stud grade表中查詢所有同學考試成績情況,凡成績為空者輸出 未考 小於60分輸出 不及格 60分至70分輸出 及格 70分至90分輸出 良好 大於或等於90分時輸出 優秀 select stud id,name,score case when grade is null then 未考...

乙個 關於 case when的SQL

例 從stud grade表中查詢所有同學考試成績情況,凡成績為空者輸出 未考 小於60分輸出 不及格 60分至70分輸出 及格 70分至90分輸出 良好 大於或等於90分時輸出 優秀 select stud id,name,score case when grade is null then 未考...

SQL中case when的用法

一.單個case when用法 首先,新建乙個表 create table battle riqi date,result varchar 10 插入資料 insert all into battle values to date 2005 05 09 yyyy mm dd win into bat...