如果有如下表:
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 日期,规格,型号,产地
不知如何才能实现以上功能?
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 日期,规格,型号,产地
不知如何才能实现以上功能?
ORDER BY 日期,规格,型号,产地
COMPUTE SUM(重量) BY 日期,规格,型号,产地
union all
select id,日期,规格,型号,重量,产地 from source
不知如何才能实现以上功能?
(
select null id,日期,规格,型号,sum(重量) 重量,产地 from source group by 日期,规格,型号,产地
union all
select id,日期,规格,型号,重量,产地 from source
) T
order by 日期,规格,型号,重量,产地
思路是,将得出的小计与所有的明细组成一个视图,然后直接从视图中取数据
此时的关键是按什么进行排序,这里用一个技巧,即在小计的时候,将其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]
用你这句话在查询分析器中是能实现,但是我现在在用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;
这样只能在表中显示一部分,如何才能显示像查询分析器里的数据呢?