如果有如下表:
id    日期  规格  型号  重量  产地
1  2005-3-26 0.56  QZ-1 10.2  浙江
2  2005-3-26 0.56  QZ-1 10.3  浙江
3  2005-3-26 0.56  QZ-1 10.6  江苏
4  2005-3-26 0.57  QZ-2 10.7  江苏
5  2005-3-26 0.56  QZ-2 10.3  浙江
6  2005-3-26 0.56  QZ-1 10.6  江苏
7  2005-3-26 0.57  QZ-1 10.7  江苏
8  2005-3-27 0.56  QZ-1 10.2  浙江
9  2005-3-27 0.56  QZ-1 10.3  浙江
10  2005-3-27 0.56  QZ-1 10.6  江苏
11  2005-3-27 0.57  QZ-1 10.7  江苏
如何将以上表按同一天、同一规格、同一型号、同一产地来进行小计得:
id    日期  规格  型号  重量  产地
1  2005-3-26 0.56  QZ-1 10.2  浙江
2  2005-3-26 0.56  QZ-1 10.3  浙江
                20.5
3  2005-3-26 0.56  QZ-1 10.6  江苏
6  2005-3-26 0.56  QZ-1 10.6  江苏
                21.2
4  2005-3-26 0.57  QZ-2 10.7  江苏
                10.7
5  2005-3-26 0.56  QZ-2 10.3  浙江
                10.3
7  2005-3-26 0.57  QZ-1 10.7  江苏
                10.7
8  2005-3-27 0.56  QZ-1 10.2  浙江
9  2005-3-27 0.56  QZ-1 10.3  浙江
                20.5
10  2005-3-27 0.56  QZ-1 10.6  江苏
                10.6
11  2005-3-27 0.57  QZ-1 10.7  江苏
                10.7
我试着用以下程序只能实现按同一天、同一规格、同一型号、同一产地统计,但不能显示id列和进行小计,
select 日期,规格,型号,重量,产地 from source group by 日期,规格,型号,产地
不知如何才能实现以上功能?

解决方案 »

  1.   

    SELECT 日期,规格,型号,重量,产地 from source
    ORDER BY 日期,规格,型号,产地
    COMPUTE SUM(重量) BY 日期,规格,型号,产地
      

  2.   

    select null,日期,规格,型号,重量,产地 from source group by 日期,规格,型号,产地
    union all
    select id,日期,规格,型号,重量,产地 from source 
      

  3.   

    select count(id), 日期,规格,型号,sum(重量),产地 from source group by 日期,规格,型号,产地
    不知如何才能实现以上功能?
      

  4.   

    select * from 
    (
    select null id,日期,规格,型号,sum(重量) 重量,产地 from source group by 日期,规格,型号,产地
    union all
    select id,日期,规格,型号,重量,产地 from source 
    ) T
    order by 日期,规格,型号,重量,产地 
      

  5.   

    对 jinjazz(近身剪*10年磨一贴) 的一点改进
    思路是,将得出的小计与所有的明细组成一个视图,然后直接从视图中取数据
    此时的关键是按什么进行排序,这里用一个技巧,即在小计的时候,将其ID号取为0
    那么查询出来的结果是小计在明细的全面,楼主可以取一个足够大的数,
    那么ID就在明细的下方
    create view V_Testa
    as
    select 0 as [id],日期,规格,型号,产地,sum(重量) as 重量 from testa group by 日期,规格,型号,产地
    union all
    select [id],日期,规格,型号,产地,重量 from testa select * from v_testa order by 日期,规格,型号,产地,[id]
      

  6.   

    可以用COMPUTER BY 很EASY
      

  7.   

    完全同意fhuibo(永远深爱一个叫“莎“的好女孩儿) 的做法.
      

  8.   

    to  fhuibo(永远深爱一个叫“莎“的好女孩儿) 
    用你这句话在查询分析器中是能实现,但是我现在在用delphi+SQL server2000做,结果作你这名话就只能显示仅仅一小部分:
              adoquery2.Close;
              adoquery2.SQL.Clear;
              adoquery2.SQL.Add('SELECT 日期,规格,型号,重量,产地 from source');
              adoquery2.SQL.Add('ORDER BY 日期,规格,型号,产地');
              adoquery2.SQL.Add('COMPUTE SUM(重量) BY 日期,规格,型号,产地');
              adoquery2.Open;
    这样只能在表中显示一部分,如何才能显示像查询分析器里的数据呢?