一个数据表,原来显示的是:
bzw rq                lh
3   2010-6-1 18:26:05  12315-1
1   2010-6-1 19:26:05  12315-2
3   2010-6-1 19:27:00  12315-3  
3   2010-6-1 19:27:05  12316-1
3   2010-6-2 8:26:05   12316-2
3   2010-6-3 19:27:00  12317-1  
3   2010-6-3 19:50:05  12317-2
3   2010-6-3 22:26:05   12317-3
3   2010-6-3 22:28:05   2005-1
3   2010-6-3 22:30:05   2005-2这个表没有主键,
我在界面上需要给它显示成:
 bzw  lh  数量
 1   12315  1
 3   12315  2
 3   12316  2
 3   12317  3
 3   2005   2
 
就是这样,没有主键,我需要显示也是按他们录入的顺序来显示炉号,在他们的界面上,他们可以按rq来显示,但到我这里要统计一下再显示,我就不会弄了。按bzw来group统计,统计个数。

解决方案 »

  1.   

    select bzw, rq, substring(lh,1,charindex('-',lh)-1) lh,max(substring(lh,charindex('-',lh)+1,len(lh)-charindex('-',lh))) xh from tablename
    group by bzw,rq,lh
      

  2.   

    select bzw, substring(lh,1,charindex('-',lh)-1) lh,Count(*) 数量 from tablename
    group by bzw, substring(lh,1,charindex('-',lh)-1) order by bzw
      

  3.   

    向 substring 函数传递了无效的 length 参数。用charindex就显示这个。
      

  4.   

    select bzw, substring(lh,1,charindex('-',lh)-1) lh,Count(*) 数量 from tablename
    group by bzw, substring(lh,1,charindex('-',lh)-1) order by bzw
      

  5.   

    最后结论是order by max(rq),