【问题标题】:Using all the dates in a given table使用给定表中的所有日期
【发布时间】:2015-09-16 23:24:15
【问题描述】:

我目前一直在研究一个存储过程,该过程可以获取我在数据库中拥有的所有有贷款的客户。我如何过滤结果是根据生成数据时给出的开始和结束日期。我的数据的工作方式是返回的表将有多个日期字段,准确地说是 9 个日期字段。每个日期字段的使用取决于LoanStatus 字段,该字段也是该表的一部分。 LoanStatus 可以具有诸如 SettledApprovedCancelled 之类的值。我想要做的是使用此开始和结束日期过滤结果,但将其应用于所有日期字段

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

第一个可能的解决方案

需要一些代码来让我基本上做到这一点:

allDatefields > @startDate AND allDatefields < @endDate.

第二种可能的解决方案

只考虑与贷款状态匹配的日期字段。例如,如果LoanStatus 已解决,则查看表的DateSettled 列,或者如果LoanStatus 已批准,则查看数据库的ApprovalDate 列。

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

SQL Server 中有没有办法将WHERE 子句应用于表中的所有日期字段?

【问题讨论】:

    标签: c# sql-server date


    【解决方案1】:

    据我所知,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
    

    【讨论】:

    • 是的,你是对的。我一直在网上搜索,同时在这里等待答案,得出了同样的结论。我做了一些与你提供的东西非常相似的东西来得到我想要的东西。我会把你的作为接受的答案:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2016-11-13
    • 2015-07-05
    • 1970-01-01
    • 2018-05-14
    • 2019-12-17
    • 2019-04-13
    相关资源
    最近更新 更多