TRXCODE in ( select JY_DM from TJFX_JYDM where STOP='0' group by JY_DM)
 and '2003-05-01'<= WORKDATE and WORKDATE <='2003-05-13'
 group by case when ISNUMERIC(BRNO)=0 then cast(brno as  int) else brno end order by wdcount desc 

解决方案 »

  1.   

    TRXCODE in ( select JY_DM from TJFX_JYDM where STOP='0' group by JY_DM) and '2003-05-01'<= WORKDATE and WORKDATE <='2003-05-13' group by case when BRNO like '0%' then cast(cast(brno as int) as varchar(100)) else brno end)  order by wdcount desc 
      

  2.   

    对不起,我的sql语句没发全,现在补上。select count(BRNO) wdcount,BRNO from TJFX_JYLOG200305 where TRXCODE in ( select JY_DM from TJFX_JYDM where STOP='0' group by JY_DM) and '2003-05-01'<= WORKDATE and WORKDATE <='2003-05-13' group by BRNO order by wdcount desc
      

  3.   

    我试了一下,虽然加了case 判断,但是在执行cast的时候还是出错
      

  4.   

    试试...
    select count(BRNO), wdcount,BRNO from TJFX_JYLOG200305 where TRXCODE in ( select JY_DM from TJFX_JYDM where STOP='0' group by JY_DM) and '2003-05-01'<= WORKDATE and WORKDATE <='2003-05-13' group by case when ISNUMERIC(BRNO)=1 then cast(cast(brno as int) as varchar(100)) else brno end order by wdcount desc
      

  5.   

    为什么提示无效的列名呢?可是不加group by case when ISNUMERIC(BRNO)=1 then cast(cast(brno as int) as varchar(100)) else brno end ,而换回by BRNO 就没问题呀。
      

  6.   

    select count(BRNO) wdcount,BRNO 
    From (Select BRNO = case when BRNO like '0%' 
        then cast(cast(brno as int) as varchar(100)) 
        else brno end) 
        from TJFX_JYLOG200305 
        where TRXCODE in 
       (select JY_DM from TJFX_JYDM where STOP='0' group by JY_DM) 
        and '2003-05-01'<= WORKDATE and WORKDATE <='2003-05-13') T 
    group by BRNO 
    order by wdcount desc
      

  7.   

    回楼上的大虾:error 位于第2行:
    未找到预期 from 关键字。