你可以看到表格和背景 . 我想从表格中的上下文中获取3个组,所以我想按 ABDC_IDENT
进行分组,但是当 DATE_RANK
11到达后, DATE_RANK
命令中断,因为你可以在数据中看到1,2(因为它是B组)然后它继续为A组排名(顺序是 VARIOUS_DATES
) .
我想要得到的是3组,第一组是A组排名1到11,第二组是B级1,2,第三组应该是A组,但排名从12到21.我希望这是明确的大家 .
我正在试验UNBOUNDED PRECEDING和当前行之间的行,欢迎任何想法,也许它也可以用其他方式完成 . 干杯和thx
这是我的小提琴,所以你可以自己构建它:
CREATE TABLE Table1
(ABDC_IDENT varchar(5), VARIOUS_DATES date, DATE_RANKS int)
;
INSERT INTO Table1
(ABDC_IDENT, VARIOUS_DATES, DATE_RANKS)
VALUES
('A', '31.12.2010', 1),
('A', '31.01.2011', 2),
('A', '28.02.2011', 3),
('A', '31.03.2011', 4),
('A', '29.04.2011', 5),
('A', '31.05.2011', 6),
('A', '30.06.2011', 7),
('A', '29.07.2011', 8),
('A', '31.08.2011', 9),
('A', '30.09.2011', 10),
('A', '31.10.2011', 11),
('B', '30.11.2011', 1),
('B', '30.12.2011', 2),
('A', '31.01.2012', 12),
('A', '29.02.2012', 13),
('A', '30.03.2012', 14),
('A', '30.04.2012', 15),
('A', '31.05.2012', 16),
('A', '29.06.2012', 17),
('A', '31.07.2012', 18),
('A', '31.08.2012', 19),
('A', '28.09.2012', 20),
('A', '31.10.2012', 21)
;
然后将所需结果插入另一个表中
Table2
GROUP_ABC | MIN_DATE | MAX_DATE |
A |31.12.2010 | 31.10.2011 |
B |30.11.2011 | 30.12.2011 |
C |31.01.2012 | 31.10.2012 |
1 回答
我认为您可以使用转换格式104来处理日期字符串 .
这有用吗?
要么: