基本上,我有以下帐户的发票行,如下所示:
BillID AccountID BilledFrom BillTo Days Price
38 3456 10/10/2012 10/11/2012 30 86p
39 3456 11/11/2012 11/12/2012 30 87p
40 3456 12/12/2012 30/12/2012 18 81p
用户希望向客户退款部分日期范围,因此用户需要输入日期开始日期和日期结束日期:
Date From: 18/10/2012 DateTo: 14/12/2012
这将导致信用额度根据每条额度的天数和价格向客户退款。我需要返回每一行并显示截止点。正如您所看到的,输入的范围跨越了 3 个发票行。
需要的结果是:
BillID AccountID BilledFrom BillTo RangeStart RangeEnd Days Price
38 3456 10/10/2012 10/11/2012 18/10/2012 10/11/2012 22 86p
39 3456 11/11/2012 11/12/2012 11/11/2012 11/12/2012 30 87p
40 3456 12/12/2012 30/12/2012 11/11/2012 11/12/2012 2 81p
结果基本上会带回最初适用的发票行,但会计算出该范围如何适合,并根据输入的日期范围计算帐单起始日期和帐单截止日期。
我需要 SQL 中的一个函数来提供此结果。任何帮助,将不胜感激。预先感谢您。
最佳答案
试试这个:
declare @DateFrom date='10/18/2012'
declare @DateTo date='12/14/2012'
select T.BillID,T.AccountID,T.BilledFrom,T.BillTo,
case when BilledFrom<@DateFrom then @DateFrom else BilledFrom end [RangeStart],
case when BillTo<@DateTo then BillTo else @DateTo end [RangeEnd],DATEDIFF(D,case when BilledFrom<@DateFrom then @DateFrom else BilledFrom end ,case when BillTo<@DateTo then BillTo else @DateTo end ) [Days],Price
from t_account T
关于c# 在日期范围之间退款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11684897/