sql的case语句

----case------
--说明:当我们在查询的时候,需要显示的不是表中列的值,而是根据列值显示其他值
--(1)区间判断
----select
--    要显示的自定义列名
--    case when  条件判断 then 需要显示的值
--    when...
--    else...
--    end

-- (2)等级判断
--select
    ---case 列名
    -- when 列值 then 需要显示的值
    -- else 需要显示的值
    -- end
select * from BBSUsers
select 
    [uId],
    name,
    等级=[level]
    from BBSUsers 
    -----------等级判断-----------
select
    [uId],
    name,
    等级=
    case [level]
    when 1 then '下官'
    when 2 then '下士'
    when 3 then '大兵'
    end
    from BBSUsers 
    --------------区间判断----------------
    select * from TblScore
    select
    tScoreId,
    tSId,
    总分=tEnglish+tMath,
    等级=
    case 
    when tEnglish+tMath>180 then'优秀' 
    when tEnglish+tMath>160 then '良好'
    when tEnglish+tMath>120 then '一般'
    else '不及格'
    --when tEnglish+tMath<120 then '不及格'
    end
    from TblScore
    --当使用case 的时候要求then后面的数据类型必须一致
    -------------------------------------------
    select * from MyOrders
    select 
    销售员,
    销售总价=sum(销售数量*销售价格),
    等级=
    case
    when sum(销售数量*销售价格)>6000 then '金牌'
    when sum(销售数量*销售价格)>5500 then '银牌'
    end
    from MyOrders
    group by 销售员
    -------------------------------------------
    select * from CaseTest1
    select
    单号=number,
    收入=
    case
    when amount>0 then amount else 0
    end,
    支出=
    case
    when amount<0 then abs(amount) else 0
    end
    from CaseTest1
    -------------------------
    --(1)
    select * from TeamScore
  select 
    teamName,
    胜=
    count(
    case 
        when gameresult='' then null else gameResult
    end),
    负=
    count(
    case
        when gameresult='' then null else gameResult
    end)
     from TeamScore group by teamName
    ----------
    --(2)
    select
      teamName, 
      胜=
      SUM(
      case
        when gameresult='' then 1 else 0
      end),
      负=
      SUM(
      case
        when gameresult='' then 1 else 0
      end)
      from TeamScore group by teamName
    
select * from NBAScore --(1)
select
teamName,
第1赛季=
SUM(
    case 
    when seasonName='第1赛季' then Score 
    end),
第2赛季=
SUM(
    case
    when seasonName='第2赛季' then Score
    end),
第3赛季=
SUM(
    case
    when seasonName='第3赛季' then Score
    end)
from NBAScore group by teamName
--(2)
select
teamName,
第1赛季=
MAX(
case
 when seasonName='第1赛季' then Score
end),
第2赛季=
MAX(
case
when seasonName='第2赛季' then Score
end),
第3赛季=
MAX(
case
when seasonName='第3赛季' then score
end)
from NBAScore group by teamName
---------------------------------------------------------------
select * from StudentScore
select
    studentId,
    语文=
    SUM(
    case 
    when courseName='语文' then score
    end),
    数学=
    SUM(
    case
    when courseName='数学' then score
    end),
    英语=
    SUM(
    case
    when courseName='英语' then score
    end)
from StudentScore group by studentId
----------------------------------------------------------------
select * from MyOrders    
select
商品编号,
商品名称,
王大销售数量=
SUM(
case 
    when 销售员='王大' then 销售数量
    end),
刘七销售数量=
SUM(
case
    when 销售员='刘七' then 销售数量
    end),
张三销售数量=
SUM(
case
    when 销售员='张三' then 销售数量
    end),
李四销售数量=
SUM(
case
    when 销售员='李四' then 销售数量
    end),
赵五销售数量=
SUM(
case
    when 销售员='赵五' then 销售数量
    end)
from MyOrders group by 商品编号,商品名称
---------------------------------------------------
原文地址:https://www.cnblogs.com/tobecabbage/p/3570082.html