日期:2014-05-17  浏览次数:20379 次

统计每天订单量
需求很简单,就是统计一年以来每天的订单量,一开始以为很简单,group by 日期下就好了,但发现很多天的订单量是0,于是那天就没有统计进去,求一个方法,如果订单量是0,那也要显示出来,日期,订单量(0)
group?by? group?by 日期

------解决方案--------------------
这里需要一个参照表,这个表最少包含一列连续的没有截断的日期,然后假设这个表为a
select a.日期,isnull(b.订单量,0) 订单量
from a left join (你一开始的语句) b on a.日期=b.日期
------解决方案--------------------
引用:
这里需要一个参照表,这个表最少包含一列连续的没有截断的日期,然后假设这个表为a
select a.日期,isnull(b.订单量,0) 订单量
from a left join (你一开始的语句) b on a.日期=b.日期
不错 测试了,可行,下面是网上找到生成日期表的语句
 CREATE   TABLE   [dbo].[time_dimension]   (
      [time_id]   [int]   IDENTITY   (1,   1)   NOT   NULL   ,
      [the_date]   [datetime]   NULL   ,
      [the_day]   [nvarchar]   (15)   NULL   ,
      [the_month]   [nvarchar]   (15)   NULL   ,
      [the_year]   [smallint]   NULL   ,
      [day_of_month]   [smallint]   NULL   ,
      [week_of_year]   [smallint]   NULL   ,
      [month_of_year]   [smallint]   NULL   ,
      [quarter]   [nvarchar]   (2)   NULL   ,
      [fiscal_period]   [nvarchar]   (20)   NULL
)   ON   [PRIMARY]

   
DECLARE   @WeekString   varchar(12),
@dDate   SMALLDATETIME,
@sMonth   varchar(20),
@iYear   smallint,
@iDayOfMonth   smallint,
@iWeekOfYear   smallint,
@iMonthOfYear   smallint,
@sQuarter   varchar(2),
@sSQL   varchar(100),
@adddays   int
   
SELECT   @adddays   =   1   --日期增量(可以自由设定)
SELECT   @dDate   =   '01/01/2002 '   --开始日期
   
WHILE   @dDate   <   '12/31/2004 '     --结束日期
BEGIN
   
      SELECT   @WeekString   =   DATENAME   (dw,   @dDate)
      SELECT   @sM