当前位置: 代码迷 >> Sql Server >> 关于统计汇总的疑问解决思路
  详细解决方案

关于统计汇总的疑问解决思路

热度:69   发布时间:2016-04-27 14:45:43.0
关于统计汇总的疑问
统计是按日统计的,最后有个总计功能,把这个月所有的都做个总计

数据是类似这样的:

日期 销量 价格
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
  相关解决方案