declare @xm varchar(50)
select @xm='XM001'
求解,怎么给这个循环累加,例如XM002,XM003这样,在线急求

解决方案 »

  1.   

    declare @s as varchar(1000)
    set @s = ''
    declare @i as int
    set @i = 1
    while @i <= 10
    begin
      set @s = @s + 'XM' + right('00' + cast(@i as varchar),3) + ','
      set @i = @i + 1
    end
    set @s = substring(@s , 1 , len(@s) - 1)print @s/*
    XM001,XM002,XM003,XM004,XM005,XM006,XM007,XM008,XM009,XM010
    */
      

  2.   


    declare @xm varchar(50)
    select @xm='XM'select top 1000 id=identity(int,1,1) into #temp
    from sysobjects,syscolumnsselect @xm+right(1000+id,3) as id
    from #tempdrop table #temp
      

  3.   


    declare @deptsid int
    declare @deptcode varchar(50)select @deptsid = (select top 1 dept_sid from view_hum_dept order by  dept_sid desc)+1select dept_code,title,dept_sid from view_hum_dept where full_name like '%sanan%'
    union all
    select @deptcode,drbm,drbm_sid=@deptsid from sa_ygddtzd恕小子愚钝。怎么套入这个sql语句当中?让@deptcode不断循环累加?
    JLS 经理室 14
    DQGZB 工会 18
    ZJLBGS 总经理办公室 19
    WJBGS 外经办公室 20
    JCSJS 审计监察部 21
    ZCCWB 资产财务部 22
    RLZYB 人力资源部 23
    JYGLB 经营管理部 24
    GCB 工程部 25
    SCB 土建公司 26
    JSB 技术部 27
    ZGBGS 总工办公室 28
    AQZLB 安全质量部 29
    ZHGLB 综合部 30
    JJBGS 规划与资本运营部 31
    NT 其他 33
    BJB 北京办公室 34
    TJFGS 天津分公司 35
    ZJGFGS 张家港分公司 36
    NJFGS 南京分公司 37
    XMFGS 厦门分公司 38
    SDFGS 山东分公司 39
    MLXYFGS 马来西亚分公司 40
    SYDQGS 三源电气有限公司 41
    XAKM 西安凯明工程机械制造厂 42
    WZB 工程部(物资) 72
    GH 党委工作室 73
    NULL 多特项目部 74
    NULL 资产财务部 74
      

  4.   


    select *,rn='XM'+right(1000+row_number() over (order by getdate()),3)
    from(
    select dept_code,title,dept_sid from view_hum_dept where full_name like '%sanan%'
    union all
    select @deptcode,drbm,drbm_sid=@deptsid from sa_ygddtzd
    )t
      

  5.   

    没试过,你试一下declare @XM varchar(5);
    declare @iXM varchar(5);
    declare @i int;set @XM='XM000';
    set @i=0;while @i<1000
    begin
    set @iXM = '00'+convert(varchar,convert(int,right(@XM,3))+1);
    set @XM=left(@XM,2)+right(@iXM,3);
    set @i=@i+1;
    print @XM;
    end
      

  6.   

    谢谢各位,我已经解决了。declare @deptsid int
    declare @deptcode varchar(50)select @deptsid = (select top 1 dept_sid from view_hum_dept order by  dept_sid desc)
    select @deptcode='XM00'
    select fc.dept_sid,fc.dept_code,fc.title
    from
    (select dept_code,title,dept_sid from view_hum_dept where full_name like '%sanan%'
    union all
    select @deptcode+convert(varchar,(row_number () over (order by getdate() desc)))
    ,drbm,@deptsid + (row_number () over (order by getdate() desc)) from sa_ygddtzd) fc
    --group by fc.dept_sid,fc.dept_code,fc.title
    where
    (fc.dept_sid in 
    (select max(fc.dept_sid)
    from 
    (select dept_code,title,dept_sid from view_hum_dept where full_name like '%sanan%'
    union all
    select @deptcode+convert(varchar,(row_number () over (order by getdate() desc)))
    ,drbm,@deptsid + (row_number () over (order by getdate() desc)) from sa_ygddtzd) fc 
    GROUP by fc.title ))
    order by fc.dept_sid