统计是按日统计的,最后有个总计功能,把这个月所有的都做个总计
数据是类似这样的:
日期 销量 价格
2012-01-01 100 5
2012-01-02 150 10
2012-01-03 175 20
2012-01-04 200 30
查询出的表格是这样的:
日期 销售额
2012-01-01 500
2012-01-02 1500
2012-01-03 3500
2012-01-04 6000
总计 11500
能不能让数据库查询结果一次性就返回1~4号4天的结果和这4天的总计
总不可能程序里面写个循环,然后里面一个个查吧..我晕死
真的没啥思路了
------解决方案--------------------
- SQL code
create table tb(日期 datetime , 产地 varchar(10))insert into tb values('2012-01-01 0:05:35', 'CN')insert into tb values('2012-01-01 0:07:35', 'CN') insert into tb values('2012-01-01 1:09:35', 'US')insert into tb values('2012-01-01 4:05:35', 'CN')insert into tb values('2012-01-02 0:06:35', 'US')insert into tb values('2012-01-02 0:07:35', 'US')insert into tb values('2012-01-03 5:07:43', 'CN')insert into tb values('2012-01-03 0:06:35', 'US')insert into tb values('2012-01-04 6:02:52', 'US') goselect convert(varchar(10),日期,120) 日期, count(1) [All], sum(case when 产地 = 'US' then 1 else 0 end) [US], sum(case when 产地 = 'CN' then 1 else 0 end) [CN]from tbgroup by convert(varchar(10),日期,120)/*日期 All US CN ---------- ----------- ----------- ----------- 2012-01-01 4 1 32012-01-02 2 2 02012-01-03 2 1 12012-01-04 1 1 0(所影响的行数为 4 行)*/select convert(varchar(10),日期,120) 日期, count(1) [All], sum(case when 产地 = 'US' then 1 else 0 end) [US], sum(case when 产地 = 'CN' then 1 else 0 end) [CN]from tbgroup by convert(varchar(10),日期,120)union allselect '合计' , count(1) [All], sum(case when 产地 = 'US' then 1 else 0 end) [US], sum(case when 产地 = 'CN' then 1 else 0 end) [CN]from tb/*日期 All US CN ---------- ----------- ----------- ----------- 2012-01-01 4 1 32012-01-02 2 2 02012-01-03 2 1 12012-01-04 1 1 0合计 9 5 4(所影响的行数为 5 行)*/drop table tb