declare @yj int
declare @cq int
declare @dq int

select @yj= count(*) from foa_wj where f_bmqx='永久' and f_status ='已归档' and f_bm=@nd  and f_nd =@bm
select @cq= count(*) from foa_wj where f_bmqx='长期' and f_status ='已归档' and f_bm=@nd and f_nd =@bm
select @dq= count(*) from foa_wj where f_bmqx='短期' and f_status ='已归档' and f_bm=@nd and f_nd =@bm
@bm 为nvarchar
消息 245,级别 16,状态 1,第 48 行
将 nvarchar 值 '办公室' 转换为数据类型为 int 的列时发生语法错误。

解决方案 »

  1.   

    条件写反了吧?declare @yj int
    declare @cq int
    declare @dq int
    set @yj = ...
    set @cq = ...
    set @dq = ...
                    
    select @yj= count(*) from foa_wj where f_bmqx='永久' and f_status ='已归档' and f_bm=@bm and f_nd =@nd
    select @cq= count(*) from foa_wj where f_bmqx='长期' and f_status ='已归档' and f_bm=@bm and f_nd =@nd
    select @dq= count(*) from foa_wj where f_bmqx='短期' and f_status ='已归档' and f_bm=@bm and f_nd =@nd
      

  2.   

    declare @yj int
    declare @cq int
    declare @dq int
                    
    select @yj= count(*) from foa_wj where f_bmqx='永久' and f_status ='已归档' and f_bm=@bm and f_nd =@nd
    select @cq= count(*) from foa_wj where f_bmqx='长期' and f_status ='已归档' and f_bm=@bm and f_nd =@nd
    select @dq= count(*) from foa_wj where f_bmqx='短期' and f_status ='已归档' and f_bm=@bm and f_nd =@nd
      

  3.   

     and f_bm=@bm and f_nd =@nd
      

  4.   

                    declare @yj int
                    declare @cq int
                    declare @dq int
                    
                    select @yj= count(1) from foa_wj where f_bmqx='永久' and f_status ='已归档' and f_bm=@nd  and f_nd =@bm
                    select @cq= count(1) from foa_wj where f_bmqx='长期' and f_status ='已归档' and f_bm=@nd and f_nd =@bm
                    select @dq= count(1) from foa_wj where f_bmqx='短期' and f_status ='已归档' and f_bm=@nd and f_nd =@bm
      

  5.   

    大乌龟说的对,"f_bm=@nd  and f_nd =@bm” 两个变量放错位置了