Sql 一段时间内的最大和平均债务天数

Sql 一段时间内的最大和平均债务天数,sql,sql-server,datetime,sum,unpivot,Sql,Sql Server,Datetime,Sum,Unpivot,我有待付款的发票,每张发票都有两个日期,第一个是发票付款日期,另一个是发票付款日期。我想知道一段时间内的最大债务和平均债务 这是桌子 Id Invoice Amount InvoiceDate InvoicePayment ----------- ------- ----------- ----------- ------------- 1 Bill 1 314 2019-01-20 2019-03-01 2

我有待付款的发票,每张发票都有两个日期,第一个是发票付款日期,另一个是发票付款日期。我想知道一段时间内的最大债务和平均债务

这是桌子

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月份的最大债务金额和平均债务

您可以使用交叉申请取消PIVOT,并使用窗口总和计算每个给定时间点的运行债务。剩下的只是过滤和聚合:

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'

无需在标题中大喊,请尝试说明您是否尝试编写任何代码并发现任何特定问题;那么,难道不是一个代码编写服务吗?似乎是个家庭作业问题。你如何定义债务?您的示例数据只有发票。