考虑一些表T
, 订购Col1, Col2, Date1, Date2
:
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 标记非常有用,但我不太清楚当速率恢复到以前的值时如何处理。我应该如何修改我的查询?