考虑一张按照Col1、Col2、Date1、Date2
排序的表格T
:
Col1 Col2 Date1 Date2 rate
ABC 123 11/4/2014 11/5/2014 -90
ABC 123 11/4/2014 11/6/2014 -55
ABC 123 11/4/2014 11/7/2014 -90
ABC 123 11/4/2014 11/10/2014 -90
我想对数据进行分组以方便审计/减少重复,因此我有以下内容:
Col1 Col2 Date1 start_Date2 end_Date2 rate
ABC 123 11/4/2014 11/5/2014 11/5/2014 -90
ABC 123 11/4/2014 11/6/2014 11/6/2014 -55
ABC 123 11/4/2014 11/7/2014 11/10/2014 -90
如果我可以得到另一列,行号为1 2 3 3
(仅需要确保数字不同),那么我可以轻松完成这个任务,然后按照该列进行GROUP BY
。
我的查询尝试:
SELECT *, DENSE_RANK() OVER (ORDER BY rate) island
FROM T
ORDER BY Date2
不能提供我所需要的内容:
Col1 Col2 Date1 Date2 rate island
ABC 123 11/4/2014 11/5/2014 -90 1
ABC 123 11/4/2014 11/6/2014 -55 2
ABC 123 11/4/2014 11/7/2014 -90 1
ABC 123 11/4/2014 11/10/2014 -90 1
我希望查询可以识别第二组
-90
值作为新的一组,因为它们出现在与另一个rate
不同的组之后。[gaps-and-islands] SQL标签非常有帮助,但我还无法弄清楚如何处理速率恢复到先前值的情况。我应该如何修改我的查询?