我有一张费用记录表(f_fee_item)如下:
Fee_Item_ID int
Fee_Basis_ID int
Start_Date date
End_Date date
Run Code Online (Sandbox Code Playgroud)
(删除了无关的列)
假设相同Fee_Basis_ID的记录不会重叠.
我需要Fee_Basis_ID在提供的@Query_Start_Date和之间的每个费用记录中找到每个缺口的Start_Date和End_Date @Query_End_Date.我需要这些数据来计算未收取费用的所有期间的应计费用.
如果给定的Fee_Basis_ID根本没有费用记录,我还需要查询返回记录(如果有帮助,Fee_Basis_ID是D_Fee_Basis.Fee_Basis_ID的外键).
例如:
@Query_Start_Date = '2011-01-01'
@Query_Start_Date = '2011-09-30'
Run Code Online (Sandbox Code Playgroud)
D_Fee_Basis:
F_Fee_Item
1
2
3
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
要求的结果:
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
Run Code Online (Sandbox Code Playgroud)
我已经尝试了不同的自我加入,试图让它工作但没有运气.
请帮忙!!
我运行一个删除记录的存储过程,然后从源系统重新填充它们.SP的删除部分根据表的层次结构进行构造,CHILD_TABLE在从引用的表(PARENT_TABLE)中删除之前从引用表(允许调用它)中删除.我从删除时得到"与REFERENCE约束冲突的DELETE语句..."错误PARENT_TABLE.
delete语句中有一个where子句,当我运行带有相同where子句的select语句时,我返回了11条记录.所以我们试图删除11条记录.
CHILD_TABLEPARENT_TABLE含有FK列的引用PARENT_TABLE.PRIMARY_KEY.但是,当我CHILD_TABLE使用以下任一方法运行select语句时,我得到0行返回:
PARENT_TABLE.PRIMARY_KEYselect语句上面的值复制并粘贴到where子句中ININ针对FK/PK的where子句EXISTS WHERE等.因此,在我看来,SQL Server认为在CHILD_TABLE确实没有的时候有数据.
这个问题看起来像是"与REFERENCE约束冲突的DELETE语句"的副本,而引用表中没有数据,但答案是(释义)"实际上存在引用表中的数据".但是,就我而言,引用的表中确实没有数据.不完全是.
我想知道是否有一个过时的索引显示参考约束,那么当真的没有时会有数据?
任何帮助/指针赞赏.