有一个表TB,表中有字段:name,day.
如:
name    day    
 张三   10      
 李四    5      
 王五    12     
 张三    15  
 王五    20 
 。
 。
 。
 。  
如何通过查询的方法,将name中的所有人的day进行求和。如,上面查询之后应该是:张三的day为25.李四为5,王五为32等等
我写的语句就是执行不了,请高手们赐教:
ADOQuery1.close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select 。。from...);{这里面的语句需要怎么写呢???}
ADOQuery1..open;
 请兄弟们帮忙,还有,就是如何让查询后的结果显示出来,如,在ListBox中显示。
谢谢。 

解决方案 »

  1.   

    select   sum(day) as 金额   from  TB  where name ='张三'
      

  2.   

    select  sum(day) as day1  from  TB  where name ='张三'
      

  3.   

    这样不行啊,那当我name中有几百个人呢?
      

  4.   

    我也是不很懂,提供参考下!
    SQL语句 'Select * From {数据库名称或数据表名称} Where{条件语句比如 Name = :Name}'
    Name 是数据表里面的字段Name   =  :Name 是一个变量  意思是当 Name 字段里面的数据 = 变量:Name
    就显示。ListBox1.items.ass(ADOQuery1.FieldByName[Name]);
    最好是用DBGrid 组件和数据源组件 DataSource 一起用!这样比较方便。
      
      

  5.   

    select sum(day) from TB group by name
      

  6.   

    问题就是这个变量要如何定义呢?真的很急啊,估计应该可以用SQL嵌套语言应该是可以的,可惜真的不会。
      

  7.   


    对所有人,也就是说如果名字相同的,就对day进行求和。
      

  8.   

    如果用ListBox控件的话?那不是要创建2个Item才能显示Name 和 day 啊
      

  9.   

    不好意思,可能是我没说清楚。
    简单的说,就是将name中的每一个人的day进行统计。
    因为name中可能会有相同一个人的名字,如‘张三’在name中出现很多次,那么就要对他的所有day进行相加。
      

  10.   


    这个倒没关系,现在主要的就是要怎么样进行对每一个人day的求和。不懂啊
      

  11.   

    select  sum(day) as day1  from  TB  where name ='张三'那就是这样啊,难道这样不行么? 你自己试试嘛? 在查询分析器里面运行下
      

  12.   

    那你先把表里面的name先查出来,然后在1个1个去查啊(生成动态sql).
      

  13.   


    你是说把day里面的数字求和啊?、、也就说全部加起来嘛!
    这个挺简单的啊!
      

  14.   

    var
      Int:integer ;
    begin
      ADOQuery1.close;
      ADOQuery1.sql.clear;
      ADOQuery1.sql.add('Select * From TB ') ;
      ADOQuery1.open;
      Int := StrToInt(ADOQuery1.FieldByName(day).Value ) ; //Int是定义的整形变量
    While Not(ADOQuery1.Eof)  do
    begin
      ADOQuery1.Next ;
      Int:=Int + StrToInt(ADoQuery1.FieldByName(day).Value );
    end;
      ListBox1.items.add(IntToStr(Int));
    LZ看看这样行不行?、、
      

  15.   


    select name,sum(day) as days from TB group by name
      

  16.   


    begin 
      ADOQuery1.close; 
      ADOQuery1.sql.clear; 
      ADOQuery1.sql.add('Select name,sum(day) as day From TB group by name') ; 
      ADOQuery1.open;
      while not ADOQuery1.eof do
      begin
      ListBox1.Items.Add(ADOQuery1.FieldByName(name).Value+inttostr(ADOQuery1.FieldByName(day).Value));
      ADOQuery1.Next;
    end; 
      

  17.   

    我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于 store_name 及 Sales 这两个栏位都要选出。第二,我们需要确认所有的 sales 都要依照各个 store_name 来分开算。这个语法为: SELECT "栏位1", SUM("栏位2") 
    FROM "表格名" 
    GROUP BY "栏位1" 在我们的示范上, Store_Information 表格
    store_name  Sales  Date  
    Los Angeles  $1500  Jan-05-1999  
    San Diego  $250  Jan-07-1999  
    Los Angeles  $300  Jan-08-1999  
    Boston  $700  Jan-08-1999  我们就打入,
    SELECT store_name, SUM(Sales) 
    FROM Store_Information 
    GROUP BY store_name 结果: store_name SUM(Sales) 
    Los Angeles $1800 
    San Diego $250 
    Boston $700 
    当我们选不只一个栏位,且其中至少一个栏位有包含函数的运用时,我们就需要用到 GROUP BY 这个指令。在这个情况下,我们需要确定我们有 GROUP BY 所有其他的栏位。换句话说,除了有包括函数的栏位外,我 们都需要将其放在 GROUP BY 的子句中。 从来没搞过sql ,呵呵。刚才冒昧的回答了,不过也能实现,刚才看了楼上几位的回答学习了。
      

  18.   

    select  sum(day) as day1  from  TB  where name =:name
    参后要需要时用参数 name 就行了
      

  19.   

    分两步走,先查出数据库中name字段有重复的人名列表namelist
    然后在库中逐个查询namelist的人名,将day字段相加即可
    select  sum(day) as day1  from  TB  where name =namelist[i]
      

  20.   

    select  sum(day) as day  from  TB  group by name