我有一个存储过程 (MS SQL Server 2008 R2),需要查看 10 点/销售额是否落在 30 天滚动窗口内。到目前为止,我有一个有效的解决方案,但它不是一个“正确”的解决方案,因为它不是基于设置的。我使用 while 循环来处理正在发生的事情。查看代理的点数,我取第一个点的日期,看看是否还有 9 个在 30 天的窗口内,如果是,我将它们标记为已处理和已使用,然后继续下一个。我认为必须有一个基于集合的“更好”的解决方案。
为了看看我有什么,我设置了一个 SQL Fiddle。最后显示我们已经处理了3个代理,有4个奖励要给。有没有更好的方法来做到这一点而不使用更基于集合的 while 循环?