当前位置: 代码迷 >> Sql Server >> 数据汇总并按汇总信息筛选,该如何处理
  详细解决方案

数据汇总并按汇总信息筛选,该如何处理

热度:65   发布时间:2016-04-27 15:28:09.0
数据汇总并按汇总信息筛选
有如下表结构:
customername productCode productName saleAmount saleDate
  欣欣超市     1 软中华    100   2007-1-1
  华联商贸     2 硬中华    50 2007-1-3
  欣欣超市     1 软中华    200 2007-1-6
  文峰超市     1 软中华    60 2007-1-7
  欣欣超市     3 苏烟     50 2007-1-8
  农工商超市    2 硬中华    300 2007-1-9
统计要求:可以按照查询要求统计  在某段时间内,某一种或某几种商品达到一定销量的客户名单信息。比如:
在2007-1-1到2007-1-10间 软中华销量达到100-400区间的客户是:欣欣超市 
在2007-1-1到2007-1-10间 软中华销量达到60-100区间的客户是:文峰超市
基本的SQL语句我写成如下:
  select sum(saleamount) as allamount,customername,productname from View_ProductSellInfoDetail where allamount>=100 and allamount<=400 group by customername,productname
但执行时出错。说是:“列名'allamount'无效”
请教高手该如何操作



------解决方案--------------------
select sum(saleamount) as allamount,customername,productname from View_ProductSellInfoDetail where allamount >=100 and allamount <=400 group by customername,productname 


--------------

select sum(saleamount) as allamount,customername,productname 
from View_ProductSellInfoDetail 
group by customername,productname 
having sum(saleamount) between 100 and 400
------解决方案--------------------
--还要加上日期


select sum(saleamount) as allamount,customername,productname 
from View_ProductSellInfoDetail 
where saleDate between '2007-01-10' and '2007-01-10'
group by customername,productname 
having sum(saleamount) between 100 and 400
------解决方案--------------------
use this:

SQL code
select * from(select sum(saleAmount) as allamount, customerName, productName from View_ProductSellInfoDetailgroup by customername, productname)twhere allamount >= 100 and allamount <= 400
------解决方案--------------------
sorry, i am wrong. using having is the right way.

SQL code
select sum(saleAmount) as allamount, customerName, productNamefrom View_ProductSellInfoDetailgroup by customername, productnamehaving sum(saleAmount) between 100 and 400
------解决方案--------------------
SQL code
declare @t table(customername nvarchar(5), productCode int, productName nvarchar(5), saleAmount int,saleDate datetime)insert @t select '欣欣超市',1,          '软中华',100, '2007-1-1' insert @t select '华联商贸',2,          '硬中华',50 ,     '2007-1-3' insert @t select '欣欣超市',1,          '软中华',200,     '2007-1-6' insert @t select '文峰超市',1,          '软中华',60 ,     '2007-1-7' insert @t select '欣欣超市',3,          '苏烟',50 ,     '2007-1-8' insert @t select '农工商超市',2,         '硬中华', 300,     '2007-1-9' select     customername,    productName,    sum(saleAmount)as '销量' from     @t where     saleDate between '2007-1-1' and '2007-1-10'group by     customername,productName having    (sum(saleAmount) between 100 and 400 )
  相关解决方案