我想基於有序列表生成累積信息。 在下面的例子中,我想根據其他3列生成雨天。 按城鎮和天排序,如果天氣乾燥,則爲空,如果天氣爲雨,則爲累積分數。使用SQL根據有序列表生成累積信息
程序上這很容易,但它感覺應該有一種方式來直接與SQL生成它,我只是無法弄清楚。
可能你可以使用分析範圍窗口,但我無法弄清楚如何跨3列做到這一點。如果存在中間行,需要重置意味着我不能忽略「幹」行並只使用row_number()。
town day weather days of rain
Stevenage 1 dry
Stevenage 2 dry
Stevenage 3 rain 1
Stevenage 4 rain 2
Stevenage 4 rain 3
Stevenage 5 dry
Stevenage 6 dry
Stevenage 8 rain 1
Stevenage 9 rain 2
Stevenage 10 dry
Watford 1 dry
Watford 2 dry
Watford 3 rain 1
Watford 4 rain 2
create table rain_test (town varchar2(20), day number, weather varchar2(10), days_of_rain number);
insert into rain_test(town, day, weather) values ('Stevenage', 1, 'dry');
insert into rain_test(town, day, weather) values ('Stevenage', 2, 'rain');
insert into rain_test(town, day, weather) values ('Stevenage', 3, 'rain');
insert into rain_test(town, day, weather) values ('Stevenage', 4, 'rain');
insert into rain_test(town, day, weather) values ('Stevenage', 5, 'dry');
insert into rain_test(town, day, weather) values ('Stevenage', 6, 'dry');
insert into rain_test(town, day, weather) values ('Stevenage', 7, 'rain');
insert into rain_test(town, day, weather) values ('Stevenage', 8, 'rain');
insert into rain_test(town, day, weather) values ('Stevenage', 9, 'rain');
insert into rain_test(town, day, weather) values ('Stevenage', 10, 'dry');
insert into rain_test(town, day, weather) values ('Watford', 1, 'dry');
insert into rain_test(town, day, weather) values ('Watford', 2, 'dry');
insert into rain_test(town, day, weather) values ('Watford', 3, 'rain');
insert into rain_test(town, day, weather) values ('Watford', 4, 'rain');
commit;
聽起來一個分析或窗口功能的工作。 –