有一数据表:大致内容如下:姓名 取货 
王二  100
李四  50
王二   30
王五   20现在想得到如下表姓名 取货物次数  取货物数量
王二      2         130
李四      1          50
王五      1          20
请教一下用sql语句怎么得到这样子的表呢?或是用什么别的方法能做到呢?

解决方案 »

  1.   

    我碰到这样的问题时,使用的笨方法,在Delphi中实现的,使用多个Query
    1、Query1的SQL属性:select distinct 姓名 from table1
    2、Query2的SQL属性:select count(取货) from table1 where 姓名=:pname
    3、Query3的SQL属性:select sum(取货) from table1 where 姓名=:pname
    4、Table1连着表2(姓名、取货物次数、取货物数量)
    5、在某个事件中加入代码:
       Query1.close;
       Query1.open;
       while not (Query1.eof) do 
       begin
       Query2.close;
       Query2.paramers[0].value:= Query1.fields[0].valus;
       Query2.open;
       Query3.close;
       Query3.paramers[0].value:= Query1.fields[0].valus;
       Query3.open;
       Table1.insert;
       Table1.fieldByName('姓名').value:=Query1.fields[0].valus;
       Table1.fieldByName('取货物次数').value:=Query1.fields[0].valus;
       Table1.fieldByName('取货物数量').value:=Query1.fields[0].valus;
       Table1.post;
       end;
    //声明:以上代码未经测试,我在网吧上网(没有Delphi),给出的是我的思路。我自己做时是这样实现的。更好的办法去写个存储过程吧。
      

  2.   

    select 姓名,count(*) as 取货物次数,sum(取货) as 取货物数量 from 数据表
      

  3.   

    同意二楼的做法
    不过要加Group by
    select PersonName,Count(*),sum(HuoCount) from temp_tab Group by PersonName
      

  4.   

    后面再加上GROUP BY 姓名
      

  5.   

    select 姓名,count(*) as 取货物次数,sum(取货) as 取货物数量 from 数据表 GROUP BY 姓名
     可以啦!
      

  6.   

    同意
    select 姓名,count(姓名) as 取货物次数,sum(取货) as 取货物数量 from 数据表 GROUP BY 姓名
      

  7.   

    select PersonName,Count(*),sum(HuoCount) from temp_tab Group by PersonName
    这个答案经典。搞定楼主的问题了。 andy1126(温柔的刀) 基本功深厚,小弟佩服.
      

  8.   

    问题解决了。谢谢各位。同时在实际操作中发现提取的记录中有姓名为空的记录,怎么在提取时就去掉呢?我将Count(*)改为Count(姓名)也不行!