我的数据表如下
   username book count
    张三    book1  1
    张三    book2  1
    张三    book3  1
    李四    book1  1
    李四    book2  1
    王五    book1  1
 
我现在对这个表进行查询后要在DBGrid中显示如下的结果:
   userName book count
    张三    book1  3
    张三    book2
    张三    book3  
    李四    book1  2
    李四    book2  
    王五    book1
还请各位帮忙

解决方案 »

  1.   

    这种显示是不可以的或是说在dbgrid中是没有办法实现的。你唯一的办法就是在你的DATASOURCE中做手脚,比如:直接使用存储过程返回你想要的结果,但是你的存储过程要做修改不是简单的SELECT了,要不你就使用第3方组件,比如devexpress的Grid组件包,他有汇总的功能。另外,你要显示成那种样子,已经很没有人性化了,建议的显示样式是:
    userName   book  count
       张三    book1  1 
       张三    book2  1
       张三    book3  1
       张三    === 3
       李四    book1  1
       李四    book2  1
       李四    === 2
       王五    book1  1
     
    这样的显示比较容易让人理解。如果要实现的话,也可以直接使用1句sql语句完成,如果使用第3方组件的话,显示的效果更好(不需要改sql语句,直接从表里出来)。如果还有问题再提出吧
      

  2.   

    select username book count from table  
    union 
    select  userName,'' sum(count)  from table 
    group by  userName
    order by  userName
    这样写更好一些,你想显示成哪样也能搞定,但是会让人一头雾水
      

  3.   

    select a.UserName,a.Book,isNull(b.count1,0) as [count] from  表名  a 
    left join 
    (select  userName,min(book) as book,sum([count])  as count1 
    from 表名  group by  userName ) b 
    on a.userName=b.UserName and  a.book=b.book
    order by  a.userName,a.book
      

  4.   

    在SQL里面进行GROUP BY NAME,BOOK对COUNT求和就可以了就可以了
    select username,book,sum(count) group by username,book
      

  5.   

    谢谢各位,我按照 hmily1688(刘涛--公司里面打杂的) 的方法已经解决了上面的问题