使用给定表中的所有日期

本文关键字:日期 | 更新日期: 2023-09-27 18:13:08

我目前正在处理一个存储过程,该过程捕获数据库中所有有贷款的客户。我过滤结果的方式是根据生成数据时给出的开始和结束日期。我的数据工作方式是,返回的表将有多个日期字段,确切地说是9个日期字段。每个日期字段的使用都取决于LoanStatus字段,该字段也是该表的一部分。"LoanStatus"可以有"Settled"、"Approved"、"Cancelled"。我要做的是使用起始和结束日期过滤结果并将其应用于所有日期字段

在我的脑海里,我有几个伪方法可能解决这个问题:

第一个可能解

需要一些代码来允许我这样做:

allDatefields > @startDate AND allDatefields < @endDate.

第二个可能的解

只考虑与贷款状态匹配的日期字段。例如,如果LoanStatus是settle,那么查看表的DateSettled列,或者如果LoanStatus是Approved,那么查看数据库的ApprovalDate列。

就我个人而言,我希望能够过滤并将@startDate@endDate应用于所有日期字段,而不是单独查看每个日期。

是否有一种方法在SQL Server中应用WHERE子句到表中的所有日期字段?

使用给定表中的所有日期

据我所知,where子句不支持您的第一个场景。我想你可能不得不接受这样的内容:

(LoanStatus = 'Approved' and ApprovalDate > @startDate AND ApprovalDate < @endDate) OR (LoanStatus = 'Settled' and SettleDate > @startDate AND SettleDate < @endDate) OR ... same for the rest of loan status values