给定结构的表格:查找期间(月)范围内涵盖的年份百分比?
CREATE TABLE [dbo].[Example](
[FiscalYear] INT NOT NULL,
[Hours] [decimal](28, 2) NULL,
CONSTRAINT [PK_Example] PRIMARY KEY CLUSTERED (
[FiscalYear] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
与数据
INSERT INTO [Example] ([FiscalYear], [Hours]) VALUES (2009 ,25) GO
INSERT INTO [Example] ([FiscalYear], [Hours]) VALUES (2010 ,20) GO
INSERT INTO [Example] ([FiscalYear], [Hours]) VALUES (2011 ,30)
假设我们提供在例如@StartPeriod = 201009
周期(即2010年3月被表示为201003)的日期范围,@EndPeriod = 201108
我将如何查询表Example
,以便获取日期范围内涵盖的时间段的代表性数据。
与上面给出的日期范围的情况下,我们会得到:
(.33333*25) + (.66666*30) = 26.66666
哪里.33333
是因为2010只有4个在期间日期范围代表个月(占全年的1/3),和.66666
是因为2011年有8个月(全年的2/3)在日期范围内表示。
如何编写查询以获得那些具有代表性的“权重”?还假定在某些情况下日期范围可以跨越多年,即@StartPeriod = 200905
,@EndPeriod = 201104
,在这种情况下,2010将由100%(1)表示。
太棒了。谢谢Andomar。感谢您指出我的错误:2011年的价值 - 修正了。不知道data.stackexchange.com。绝对不可思议! – richard 2012-02-07 10:04:56