字段如下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.   


    -->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
      

  2.   

    SELECT t.product,
           (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