我有一张由日期和名字组成的表格。我想按名称和日期对结果进行分组,条件是所选结果日期至少相隔10天(从该名称表中的第一个日期开始)
这是一个例子:
________________________
Names | Dates
-----------------------
John | 2-2-2000
________________________
John | 5-2-2000
________________________
John | 16-2-2000
________________________
John | 17-2-2000
________________________
John | 20-2-2000
________________________
John | 31-2-2000
________________________
John | 5-3-2000
________________________
John | 14-3-2000
________________________
查询的输出应该是这些值的count之和(john,2-2-2000),(john,16-2-2000),(john,31-2-2000),(john,14-3-2000),即4。
如何在sql server中为此编写查询?
2条答案
按热度按时间1l5u6lss1#
这有点棘手,因为您需要跟踪“拾取”的最后一行以选择下一行。这意味着您需要一种迭代过程,这反过来又意味着一个递归查询:
db fiddlde上的演示:
gv8xihay2#
你的问题不清楚。与您期望的结果一致的还有,您希望计算与前一行的间隔为10天以上的行。为此,只需使用
lag()
:使用
select *
获取记录列表。