【发布时间】:2011-10-03 10:04:25
【问题描述】:
我有一张费用记录表 (f_fee_item),如下所示:
Fee_Item_ID int
Fee_Basis_ID int
Start_Date date
End_Date date
(删除不相关的列)
假设相同 Fee_Basis_ID 的记录不会重叠。
我需要在提供的@Query_Start_Date 和@Query_End_Date 之间找到每个Fee_Basis_ID 的费用记录中每个空白的开始日期和结束日期。我需要这些数据来计算未收取费用的所有期间的应计费用。
如果给定的 Fee_Basis_ID 根本没有费用记录,我还需要查询返回记录(如果有帮助,Fee_Basis_ID 是 D_Fee_Basis.Fee_Basis_ID 的外键)。
例如:
@Query_Start_Date = '2011-01-01'
@Query_Start_Date = '2011-09-30'
D_Fee_Basis:
F_Fee_Item
1
2
3
F_Fee_Item:
Fee_Item_ID Fee_Basis_ID Start_Date End_Date
1 1 2011-01-01 2011-03-31
2 1 2011-04-01 2011-06-30
3 2 2011-01-01 2011-03-31
4 2 2011-05-01 2011-06-30
要求的结果:
Fee_Basis_ID Start_Date End_Date
1 2011-07-01 2011-09-30
2 2011-04-01 2011-04-30
2 2011-07-01 2011-09-30
3 2011-01-01 2011-09-30
几天来,我一直在尝试不同的自联接以使其正常工作,但没有成功。
请帮忙!!
【问题讨论】:
-
F_Fee_Item表有多少条记录? -
预计在系统生命周期内保持在 5 位数以下
标签: sql sql-server sql-server-2005 tsql