表名:Test     数据如下: 
ProName(产品名称)   Price(价格)     Date(时间) 
产品一                  200           2007-1-1 
产品一                  240           2007-1-3 
产品一                  280           2007-1-8 
产品一                  230           2007-2-2 
产品一                  260           2007-2-9 
... 
要求根据传入的产品名称和时间段(如:产品一,2007-01-01,2007-01-04)得出如下结果: 
ProName(产品名称)   Price(价格)            Date(时间) 
产品一                240(一月平均价格)       2007-1 
产品一                245(二月平均价格)       2007-2 
产品一                  0(三月平均价格)       2007-3
产品一                  0(四月平均价格)       2007-4
要把没有的记录价格以0查询出来(三月和四月没有记录,也要查询出来)
求高手摆平,谢谢!

解决方案 »

  1.   

    DECLARE   @ProID INT
    DECLARE   @Day1 VARCHAR(20) --2007-1-1
    DECLARE   @Day2 VARCHAR(20)  --2007-4-1
    DECLARE   @ProName VARCHAR(50)BEGIN 
         SET @ProName='a1'  --名称     DECLARE @Table1 TABLE(ProName VARCHAR(20),Price INT,Date1 VARCHAR(20))
         DECLARE @i INT
         SET @i= 1  --取出月份2007-1-1     WHILE(@i<12)--取出月份2007-4-1
         BEGIN
             INSERT INTO @Table1(ProName,Price ,Date1) SELECT @ProName,ISNULL(AVG(bb),0),CAST(DATEPART(YEAR,'2007-12-11') AS VARCHAR) + '年' +
    CAST(@i AS VARCHAR) + '月' FROM aaa  
          WHERE cc>='2007-' + CAST(@i AS VARCHAR) + '-1' AND cc<='2007-' + CAST(@i AS VARCHAR) + '-29' 
    AND aa=@ProName
    --   GROUP BY 
    --PRINT @i         SET @i=@i+1
         END
         SELECT * FROM @Table1
    END