Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Флейм > Группировка задач по дням


Автор: dEEp 12.1.2011, 18:40
Поковырял по форуму, но то, что нужно - не нашёл. А тема такая...

Есть список задач. Они все имеют время начала и окончания задачи. Тема в том, что необходимо на странице вывести список всех задач, но разбитых по дням.

В итоге получится что-то вроде этого:

Код

1 января 2011 год
    -task 1
    -task 2

2 января 2011 год
    -task 3

12 января 2011 год
    -task 4
    -task 5
    -task 6


Конечно, понятно, что используя простой запрос select * from tasks group by starttime, мы получим сгруппированные задачи. Но как быть со второй частью? Т.е. имея набор задач, сгруппированных по времени, разбить на дневное распределение, как описал в примере?

P.S. Сорри, видимо не туда положил пост. Мне кстати код не обязателен. Мне бы логически понять. Сплю мало - туплю много.

Автор: RockClimber 13.1.2011, 08:17
Т. е. для каждого дня выписать список задач, которые в этот день будут выполняться?
Задача может выполняться более одного дня? Например, стартовать 1-го и завершиться 4-го? Например, есть две задачи, одна начинается 1-го и заканчивается 4-го, а вторая начинается 3-го и заканчивается 3-го. Результат должен быть:
Код

1 января
  задача 1
2 января
  задача 1
3 января
  задача 1
  задача 2
4 января
  задача 1
Я правильно понял?

Автор: Akella 13.1.2011, 10:22
Поставь себе MS Outlook

Автор: mdyug 13.1.2011, 11:36
В 2008 точно и по идее в Win 7 есть поля "Next Run Time" и "Last Run Time" содержащие полную дату и время.

Автор: dEEp 13.1.2011, 11:40
причём тут outlook вообще?


RockClimber, задача может начаться и закончиться в любое время. однако в списке задач - группировка только по началам. т.е. в твоём примере (учитывая то, что задача 1 будет идти несколько дней) получится:

Код

1 января
  задача 1
3 января
  задача 2


да да, это ###, но так требует сами знаете кто.

Автор: Akella 13.1.2011, 11:47
Цитата(dEEp @  13.1.2011,  11:40 Найти цитируемый пост)
причём тут outlook вообще?

там можно выводить задачи по дням

Добавлено через 33 секунды
короче попроси модераторов перенести тему в соответствующий раздел  smile 

Автор: Zloxa 13.1.2011, 12:01
Код

SQL> with t as (
  2  select trunc(sysdate,'Y') starttime, 'task 1' task  from dual
  3  union all select trunc(sysdate,'Y') starttime, 'task 2' task  from dual
  4  union all select trunc(sysdate,'Y')+1 starttime, 'task 3' task  from dual
  5  union all select trunc(sysdate,'Y')+11 starttime, 'task 4' task  from dual
  6  union all select trunc(sysdate,'Y')+11 starttime, 'task 5' task  from dual
  7  union all select trunc(sysdate,'Y')+11 starttime, 'task 6' task  from dual
  8  )
  9  select nvl(nvl2(task,' -'||task,null),to_char(starttime,'fmDD month YYYY','NLS_DATE_LANGUAGE = russian')) result
 10   from t
 11  group by rollup (starttime,task)
 12  having grouping(starttime) = 0
 13  order by starttime,grouping(task) desc;
 
RESULT
----------------
1 январь 2011
 -task 1
 -task 2
2 январь 2011
 -task 3
12 январь 2011
 -task 4
 -task 5
 -task 6
 
9 rows selected
 


http://segfault.kiev.ua/smart-questions-ru.html#forum

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)