【发布时间】:2018-07-20 19:00:08
【问题描述】:
考虑一下我有这张桌子:
// Orders
OrderId Customer OrderDate
------------------------------
1 Jack 2018/05/01
2 Jack 2018/05/05
3 Jack 2018/05/15
4 Jack 2018/05/18
5 Jack 2018/05/21
6 Alex 2018/06/11
7 Alex 2018/06/12
8 Alex 2018/06/17
9 Alex 2018/06/18
我想要一个查询来在单个列中显示他们的订单之间的间隔天数,如下所示:
Customer Gaps GapAverage
---------------------------------------
Jack 4, 10, 3, 3 5
Alex 1, 5, 3 3
所以对于 Jack,他的 2nd 订单是在他的 1st 订单之后 4 天,他的 3rd 是 10 天 在他的 2nd 订单之后... 而他的平均间隔是 5 天。
如何在 SQL Server 中编写查询来实现这样的结果?
【问题讨论】:
-
为什么你认为这与窗口函数有关?你可以谷歌“sql server string aggregation”。
-
@GordonLinoff 因为我希望将它们分组,并且每个组都应该进行排序,并且每个值都应该根据其前一行进行计算。仅使用字符串聚合怎么可能做到这一点?
-
。 . SQL Server 2017中的函数是
string_agg():docs.microsoft.com/en-us/sql/t-sql/functions/…。 -
@GordonLinoff 如何聚合
thisRow.OrderDate - previousRow.OrderDate? -
@mehrandvd 如果您需要将 STRING_AGG 替换为其他替代功能,请告诉我。在这种情况下,我将编辑我的答案。
标签: sql sql-server azure-sql-database