读书人

统计每日订单量

发布时间: 2013-06-26 14:29:32 作者: rapoo

统计每天订单量
需求很简单,就是统计一年以来每天的订单量,一开始以为很简单,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 @sMonth=DATENAME(mm,@dDate)
SELECT @iYear= DATENAME (yy, @dDate)


SELECT @iDayOfMonth=DATENAME (dd, @dDate)
SELECT @iWeekOfYear= DATENAME (week, @dDate)
SELECT @iMonthOfYear=DATEPART(month, @dDate)
SELECT @sQuarter = 'Q ' + CAST(DATENAME (quarter, @dDate)as varchar(1))

INSERT INTO time_dimension(the_date, the_day, the_month, the_year,
day_of_month,
week_of_year, month_of_year, quarter) VALUES
(@dDate, @WeekString, @sMonth, @iYear, @iDayOfMonth, @iWeekOfYear,
@iMonthOfYear, @sQuarter)
SELECT @dDate = @dDate + @adddays
END
GO

读书人网 >SQL Server

热点推荐