如果是一个语句,不能用 if 代替case when

解决方案 »

  1.   

    在这里用case when 是比较简洁的方法
      

  2.   

    不想用,也可用 Pepartment=replace(replace(replace(replace(replace(rtrim(Pepartment),'1','财务部'),'2','人力资源部'),'3','经理办公室'),'4','研发部'),'5','市场部')
      

  3.   

    select EmployeeID,Name,Address,Pepartment
          if Pepartment=1 
     begin
     set Pepartment= '财务部'
     end
     else if Pepartment=2
    begin
     set Pepartment= '人力资源部'
    end
     else if Pepartment= 3
    begin 
    set Pepartment= '经理办公室'      
    end
     else if Pepartment=4
    begin
     set Pepartment= '研发部'          
    end
     else if Pepartment=5
    begin
     set Pepartment= '市场部'  
    end 
    from Employees
    我试着写了一条  可是提示错误
    消息 102,级别 15,状态 1,第 1 行
    '=' 附近有语法错误。
    消息 102,级别 15,状态 1,第 1 行
    '=' 附近有语法错误。
    消息 102,级别 15,状态 1,第 1 行
    '=' 附近有语法错误。
    消息 102,级别 15,状态 1,第 1 行
    '=' 附近有语法错误。
    消息 102,级别 15,状态 1,第 1 行
    '=' 附近有语法错误。
      

  4.   

    楼主,这不是MySQL啊在 select 处不可用if 代替用法是 Case when 
      

  5.   

    roy_88
    四楼的大侠 可不可以再说的明白点啊  我有点不明白
      

  6.   


    select 不可以加if 判断,只可用case when 如果这转换经常用,你用一个表记录 1--》部门
    查询时连接查询就行了
      

  7.   

    用CASE 好好的,为什么一定要用什么if呢.
    如果一定不能用case 可以考虑用replace:
    select EmployeeID,Name,Address,Pepartment=
    replace(replace(replace(replace(replace(ltrim(pepartment),'1','财务部'),'2','人力资源部'),'3','经理办公室'),'4','研发部'),'5','市场部')
    from Employees不过这必须保证pepartment只是一位的0-9之间的数字.
      

  8.   

      Create table Pepartment(ID int,PepartmentName nvarchar(50))
      
      insert  Pepartment select  1 , '财务部'
      insert  Pepartment select  2 , '人力资源部'
      insert  Pepartment select  3 , '经理办公室'
      insert  Pepartment select  4 , '研发部'
      insert  Pepartment select  5 , '市场部'
      
      
      go
      
      select 
      *,
      b.PepartmentName as Pepartment
      from Employees as a
      inner join Pepartment as b on a.Pepartment=b.ID
      

  9.   

    create table Employees (
      EmployeeID char(6) primary key not null,
     Name varchar(6) not null,
     Education varchar(4) not null,
     Birthday datetime not null,
     Sex bit not null default 1,
     WorkYear tinyint null,
     Address varchar(40),
     PhoneNumber char(12) null,
      Pepartment char(3) not null  
    )
    insert into Employees values('000001','王林','大专','1966-01-23',1,8,'中山路32-1-508','83355668',2);
    insert into Employees values('010008','伍容华','本科','1976-03-28',1,3,'北京东路100-2','83321321',1);
    insert into Employees values('020010','王向容','硕士','1982-12-09',1,2,'四牌楼10-0-108','83792361',1);
    insert into Employees values('020018','李丽','大专','1960-07-30',0,6,'中山东路102-2','83413301',1);
    insert into Employees values('102201','刘明','本科','1972-10-18',1,3,'虎距路100-2','83606608',5);
    insert into Employees values('102208','朱骏','硕士','1965-09-28',1,2,'牌楼巷5-3-106','84708817',5);
    insert into Employees values('108991','钟敏','硕士','1979-08-10',0,4,'中山路10-3-105','83346722',3);
    insert into Employees values('111006','张石兵','本科','1974-10-01',1,1,'解放路34-1-203','84563418',5);
    insert into Employees values('210678','林涛','大专','1977-04-02',1,2,'中山北路24-35','83467336',3);
    insert into Employees values('302566','李玉珉','本科','1968-09-20',1,3,'热和路209-3','58765991',4);
    insert into Employees values('308759','叶凡','本科','1978-11-18',1,2,'北京西路3-7-52','83308901',4);
    insert into Employees values('504209','陈林琳','大专','1969-09-03',0,5,'汉中路120-4-12','84468158',4);
    go
    create function useif
    (@p char(3))
    returns nvarchar(10)
    as
    begin
    declare @s nvarchar(10)
    if @p=1
    set @s='财务部'
    else if @p=2
    set @s='人力资源部'
    else if @p=3
    set @s='经理办公室'
    else if @p=4
    set @s='研发部'
    else if @p=5
    set @s='市场部'
    return @s
    end
    go
    select EmployeeID,Name,Address,Pepartment=dbo.useif(Pepartment)
    from Employees
    /*
    EmployeeID Name   Address                                  Pepartment
    ---------- ------ ---------------------------------------- ----------
    000001     王林     中山路32-1-508                              人力资源部
    010008     伍容华    北京东路100-2                                财务部
    020010     王向容    四牌楼10-0-108                              财务部
    020018     李丽     中山东路102-2                                财务部
    102201     刘明     虎距路100-2                                 市场部
    102208     朱骏     牌楼巷5-3-106                               市场部
    108991     钟敏     中山路10-3-105                              经理办公室
    111006     张石兵    解放路34-1-203                              市场部
    210678     林涛     中山北路24-35                                经理办公室
    302566     李玉珉    热和路209-3                                 研发部
    308759     叶凡     北京西路3-7-52                               研发部
    504209     陈林琳    汉中路120-4-12                              研发部(12 行受影响)*/
    go
    drop table Employees
    drop function dbo.useif
      

  10.   


    if xxx
      select xxx from xxx
    else if xxx
      select xxx from xxx..
    ;
    不知道这样算不算一句,还是用case when好点。
      

  11.   

    我想用SQL做一个表格,就是一个员工工资的表格,但员工销售的毛利率大于某一数值的时候,就可以自动进行下一种运算,哪位高手可以指教一下,跪求!!!!!