一段时间内的最大和平均债务天数
Max and Avg debt days over a period of time
我有待付款的发票,每张发票都有两个日期,一个是发票需要付款的日期,另一个是发票付款的日期。我想知道一段时间内最大债务和平均债务
这是table
Id Invoice Amount InvoiceDate InvoicePayment
----------- ------- ----------- ----------- -------------
1 Bill 1 314 2019-01-20 2019-03-01
2 Bill 2 205 2019-01-14 2019-02-18
3 Bill 3 90 2019-02-04 2019-02-06
4 Bill 4 456 2019-01-03 2019-04-27
我想知道2月份的最大债务额和平均债务额
您可以使用 cross apply
逆向旋转,并使用 window 总和来计算每个给定时间点的“运行”债务。剩下的只是过滤和聚合:
select avg(debt) avg_debt, max(debt) max_debt
from (
select x.dt, sum(x.amount) over(order by x.dt) debt
from mytable t
cross apply (values (invoicedate, amount), (invoicepayment, -amount)) as x(dt, amount)
) t
where dt >= '20200201' and dt < '20200301'
我有待付款的发票,每张发票都有两个日期,一个是发票需要付款的日期,另一个是发票付款的日期。我想知道一段时间内最大债务和平均债务
这是table
Id Invoice Amount InvoiceDate InvoicePayment
----------- ------- ----------- ----------- -------------
1 Bill 1 314 2019-01-20 2019-03-01
2 Bill 2 205 2019-01-14 2019-02-18
3 Bill 3 90 2019-02-04 2019-02-06
4 Bill 4 456 2019-01-03 2019-04-27
我想知道2月份的最大债务额和平均债务额
您可以使用 cross apply
逆向旋转,并使用 window 总和来计算每个给定时间点的“运行”债务。剩下的只是过滤和聚合:
select avg(debt) avg_debt, max(debt) max_debt
from (
select x.dt, sum(x.amount) over(order by x.dt) debt
from mytable t
cross apply (values (invoicedate, amount), (invoicepayment, -amount)) as x(dt, amount)
) t
where dt >= '20200201' and dt < '20200301'