字段如下name product ymd number
用户1 A 2012-07-01 10
用户2 B 2012-08-02 5
用户3 C 2012-08-03 20
用户4 D 2012-08-06 30
用户5 A 2012-08-29 50能否查出如下结果product 当日量 当月量 上月量 总量
A 50 50 10 60
B 0 5 0 5
如果不行,是否定时汇总成上面的格式保存起来好一点,因为数据比较大,实时性也很重要
用户1 A 2012-07-01 10
用户2 B 2012-08-02 5
用户3 C 2012-08-03 20
用户4 D 2012-08-06 30
用户5 A 2012-08-29 50能否查出如下结果product 当日量 当月量 上月量 总量
A 50 50 10 60
B 0 5 0 5
如果不行,是否定时汇总成上面的格式保存起来好一点,因为数据比较大,实时性也很重要
-->try
select t.product,
当日量=(select number from 表 where t.product=product and convert(varchar(10),getdate(),120)=ymd),
当月量=(select sum(number) from 表 where t.product=product and convert(varchar(7),getdate(),120)=convert(varchar(7),ymd,120)),
上月量=(select sum(number) from 表 where t.product=product and datediff(month,ymd,getdate())=1),
总量=(select sum(number) from 表 where t.product=product)
from (select distinct product from 表) t
(SELECT NUMBER
FROM 表
WHERE t.product = product
AND ymd=Convert(VARCHAR(10),Getdate(),120))as 当日量 ,
(SELECT Sum(NUMBER)
FROM 表
WHERE t.product = product
AND Convert(VARCHAR(7),Getdate(),120) = Convert(VARCHAR(7),ymd,120)) as 当月量,
(SELECT Sum(NUMBER)
FROM 表
WHERE t.product = product
AND Datediff(MONTH,ymd,Getdate()) = 1)as 上月量,
(SELECT Sum(NUMBER)
FROM 表
WHERE t.product = product)as 总量
FROM (SELECT DISTINCT product
FROM 表) t