我正在尝试创建一个查询,该查询从包含开始月份和结束月份的记录的表中返回每个月的单独行。例如。如果记录的开始月份为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
一直在寻找几个小时 - 任何人都可以帮助我!!!非常感谢提前。
答案 0 :(得分:0)
如果您有一个整数表,您可以加入table of integers的日期部分,它将为您提供月份范围。另一个月份描述表的连接将为您提供标签。要获得拆分成本,您需要计算出两者之间的行数并除以成本(假设它是直接拆分。
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