温习sql case when then

首先看我准备一张数据表(这是做一个数据测试的表,就相当于它们,一天打好几场球)

没错,就需要得到箭头指向的数据表,从数据表结构看出,应该会用到sum加和函数,

同时还会用到分组函数,不同日期的分组

 select distinct Date,
 sum(case Result when '胜利' then 1 else 0 end)as '胜利', //当判断为胜利的时候1 不是当然是0 sum+0=sum
 sum(case Result when ''    then  1 else 0 end)as ''
 from Game group by date //给日期分组
//话语来解释:找到 Result 当为 '胜利' 表示 1 反之 表示 0 end(结束 有点像if else 的感觉)

上面是一个例子。下面看一下 case when 的语法

关于Case  when 主要有两种语法的用法

 

//----------ome-------------------------------------
case 字段
         when '子段值' then '表示的结果值'
          when '字段2' then '表示的结果值2 '
       else '其他' end  //---------这种和swtic类似
//----------two-------------------------------------------
case when sex='1' then ''
         when sex='0' then ''
else '其他' end

 

以上两种方式都可以实现相同的功能!

case when 字段 用法:

下面用 case 字段 when 用法

//下面插入代码:

 

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT  [ID]
      ,[Name]
      ,[SerialNumber]
      ,[Qty],(case  when 0<Qty and Qty<=2000 then 'C等级'
                   when 2000<Qty and Qty<=3000 then 'B等级'
                   else
                    '超级A'end)as 等级
  FROM [RTest].[dbo].[Produc]
  
  //--------------------------------------------------------------------------
  SELECT  [ID]
      ,[Name]
      ,[SerialNumber]
      ,[Qty],case Name when '三星XXJ' then '韩国'
                       when '苹果4' then '美国'
                       when '苹果5' then '美国'
                       when 'wphone8' then '美国'
                       when '宏基' then '中国台湾'
                       when '联想' then '中国大陆'
                    else
						'山寨'
                    end  as '地区'
  FROM [RTest].[dbo].[Produc]

 

  

 

 

 

posted @ 2013-04-20 16:32  KyrieYang  阅读(7433)  评论(0编辑  收藏  举报