sql query3

sql_query
Дата: 19.09.2004 07:01:26
есть следуящая таблица:
date hours code status
==== ===== ==== =====
05/2004 24 10
06/2004 24 10
07/2004 24 10
08/2004 24 10
09/2004 5 10
10/2004 8 10
11/2004 24 10
12/2004 24 10
13/2004 2 10

как можно выбрать следующ:
date hours code status
==== ===== ==== =====
05/2004 24 10 shut
09/2004 5 10 active
11/2004 24 10 shut
13/2004 2 10 active

Oracle 9.2.0.4
Lizka
Дата: 19.09.2004 07:31:00
откуда берется status? Почему в первой таблице - пусто, а во второй какие-то значения?
sql_query
Дата: 19.09.2004 07:45:07
там где hours=24 status='shutin' а в остальных случаях status='active'
Lizka
Дата: 19.09.2004 07:52:54
у тебя какое-то условие по датам или кодам? Т.е. какую инфу несет эта таблица и то, что тебе надо выбрать?
Lizka
Дата: 19.09.2004 07:54:04
просто только по результату и одной таблице не понятен принцип выбора. Либо у тебя есть ещё одна таблица - либо какое-то условие на даты.
sql_query
Дата: 19.09.2004 08:18:29
основное условие:
группировка по code and then идет упорядочивание по date and hours:
когда встречаются hours = 24 то группируется до первого
значения,которое не равно 24,затем значение не равное 24 группируется
до первого равного 24 и т.п.
sql_query
Дата: 19.09.2004 08:21:37
добавлю кое-что:
===================
основное условие:
группировка по code and then идет упорядочивание по date and hours:
когда встречаются hours = 24 то группируется до первого
значения,которое не равно 24 и выбирается min(date) из этой группы,затем значение не равное 24 группируется
до первого равного 24 и также выбирается min(date) из этой группы и т.п..
Lizka
Дата: 19.09.2004 08:31:26
а даты упорядоченны?
Если упорядоченны, то выбираем запись из таблицы, где code = 10 and hours = 24, запоминаем id или дату. Потом с даты по дату выбираем записи, берём min(date). Можно сделать вложенный подзапрос.
sql_query
Дата: 19.09.2004 08:34:52
да,
date упорядочены.
примерчиком не снабдите а как то не догоняю как это сделать.
sql_query
Дата: 19.09.2004 08:41:07
create table test (prod_date date,hours number,code number,status varchar2(10));
insert into test (date,hours,code,status) values ('05-Aug-2004',24,10);
insert into test (date,hours,code,status) values ('06-Aug-2004',24,10);
insert into test (date,hours,code,status) values ('07-Aug-2004',24,10);
insert into test (date,hours,code,status) values ('08-Aug-2004',24,10);
insert into test (date,hours,code,status) values ('09-Aug-2004',5,10);
insert into test (date,hours,code,status) values ('10-Aug-2004',8,10);
insert into test (date,hours,code,status) values ('11-Aug-2004',24,10);
insert into test (date,hours,code,status) values ('12-Aug-2004',24,10);
insert into test (date,hours,code,status) values ('13-Aug-2004',2,10);