这是我使用的SQL:
SELECT
num
, empid
, orderdate
FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY orderdate) AS Num
, empid
, orderdate
FROM TSQL.Sales.Orders)T1
WHERE empid = 4
这是它返回的内容:
我想要做的是根据num列获取每组连续数字的最小和最大日期。 例如:第一组将是3号,4号,5号和5号。 6.所以最低日期是2006-07-08,最长日期是2006-07-10
请参阅下面所需的结果示例
非常感谢您提供的任何帮助,谢谢您提前
更新
我现在已经更改了SQL以执行我需要的操作:示例如下:
Select
empid
, Island
, MIN(orderdate) as 'From'
, Max(orderdate) as 'To'
From
(select
empid
, num
, num - ROW_NUMBER() OVER (ORDER BY num, orderdate) as Island
, orderdate
from
(Select
ROW_NUMBER() OVER (ORDER BY orderdate) as Num
, empid
, orderdate
from TSQL.Sales.Orders)T1
where empid = 4
)T2
group By
empid
, Island
结果
非常感谢您对此的帮助,我多年来一直在尝试
问候
杰森
答案 0 :(得分:1)
这应该这样做:
{{1}}
基本上它首先使CTE以日期顺序获取每行的行号。然后它生成一个递归CTE,首先找到没有先前顺序条目的所有组,然后将所有后续条目添加到同一组。最后,它会记录所有分配的组号,并按组号分组,并获取最小和最大日期。