case查询

本文介绍 SQL 中 Case 函数的使用方法,并通过多个实际案例展示如何利用 Case 函数进行条件判断,包括成绩评级、订单销售统计等场景,帮助读者掌握这一实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-----------case函数用法
use School
select * from Score
SELECT * FROM Student
--
SELECT
scoreId,
studentId,
english,
评级=
case --类似c#中的 if ..else,对一个范围的值进行判断
    when english>=90 then '优秀'
    when english>=80 then '良好'
    when english>=70 then '中等'
    when english>=60 then '及格'
else '不及格'
end
FROM Score
----case level
--        when 1 then '骨灰'
--        when 2 then '大虾'
--        when 3 then '菜鸟'
--    end
select
    scoreId,
    studentId,
    english,
    等级=
      case english  ---类似于c#中的swith ...case只能对离散的值进行判断
          when 100 then '百分'
          when 95  then '九十五'
       else
         '小于九十分'
       end
     
   from Score
   
   --有一个表中有A,B两列,现在要求查询结果集中包含A,B,C三列。
   --如果A列中的值大于B列,则c列中的值为A中的值,否则为B中的值。
   create table TestCase
   (
   A int,
   B int
   )
   select * from TestCase
   insert into TestCase values(10,20)
     insert into TestCase values(100,32)
   
   select
   A,
   B,
   C=
      CASE
         WHEN A>=B THEN A
         ELSE B
       END
   from TestCase
   --在订单表中,统计每个销售员的总销售金额,列出销售员名、总销售金额、称号(>6000金牌,>5500银牌,>4500铜牌,否则普通)
   USE Test
   select * from MyOrders
   
   SELECT
   salesAssistant AS 销售员,
   SUM(saveNumber*savePrice) as 销售总金额,
   称号=
   case
       when  SUM(saveNumber*savePrice) >6000 then '金牌'
        when  SUM(saveNumber*savePrice) >5500 then '银牌'
         when  SUM(saveNumber*savePrice) >4500 then '铜牌'
   
   FROM MyOrders
   GROUP BY salesAssistant
   
   create table Test2
   (
   UName varchar(50),
   UAge int
   )
   select *from Test2
   insert into Test2 values('tom',20)
   insert into Test2 values ('jon',30)
   
   









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值