1

我正在尝试创建一个查询,该查询从包含开始月份和结束月份的记录的表中返回每个月的单独行。EG 如果记录的开始月份为 2012 年 1 月,结束月份为 2012 年 3 月,我想返回三行 - 2012 年 1 月、2012 年 2 月和 2012 年 3 月。开始月和结束月之间的实际差距可能跨越数年和需要返回的行数因记录而异。实际目的是将总成本拆分为每月的成本

就像是:

记录:

Value  Start Month  End Month
 30     Jan 2012     March 2012

查询返回

Value  Month
 10    Jan 2012
 10    Feb 2012
 10    March 2012

已经找了好几个小时了——谁能帮帮我!!!提前谢谢了。

4

1 回答 1

0

如果您有一个整数表,您可以将日期部分加入到整数表中,这将为您提供月份范围。另一个加入月份描述表将使您恢复标签。要获得拆分成本,您需要计算出中间的行数并划分成本(假设它是直接拆分。

    select 
    bb.integer as MonthDesc,
cc.MonthDescription,
aa.MyCost / datediff(mm,mydatefield, mydatefield2)
    datepart(yy, mydatefield)
    from dbo.tblMyTableofFacts aa
    inner join dbo.tblMyTableOfInters bb
    on bb.integer between datepart(mm,mydatefield) and datepart(mm,mydatefield2)

inner join dbo.tblMyTableOfMonths cc
on bb.Integer = cc.MonthNumber
于 2012-12-12T19:43:05.917 回答