|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
Есть простая таблица: СотрудникДатаВремяНачРаботыВремяОкончРаботыИванов01/04/201607:0018:00Петров02/04/201607:0018:00Сидоров01/04/201600:0009:00[/CSV] Нужна идея (подход) - Как построить шахматку (за месяц): В строках: Дата , в Колонках: Часы (от 00 до 23), В области данных: количество работавших сотрудников. Дата00-0101-02...08-09...23-0001/04/201611...2...002/04/201600...1...0 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 12:03 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
перекрёстный запрос. Можно даже мастером построить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 12:11 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
Akina, Часы как разобрать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 12:29 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
Создать опорную таблицу часов и сделать "раскидку" исходных данных по попаданию в диапазон опорной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 12:39 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
Akina, Если делать опорную таблуцу и "раскидку", то и перекрестный запрос не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 12:48 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
MikeLedЕсть простая таблица: СотрудникДатаВремяНачРаботыВремяОкончРаботыИванов01/04/201607:0018:00Петров02/04/201607:0018:00Сидоров01/04/201600:0009:00[/CSV] Нужна идея (подход) - Как построить шахматку (за месяц): В строках: Дата , в Колонках: Часы (от 00 до 23), В области данных: количество работавших сотрудников. Дата00-0101-02...08-09...23-0001/04/201611...2...002/04/201600...1...0 Какой тип данных поля "ВремяНачРаботы" и "ВремяОкончРаботы"? База какая? В смысле: Access, SQL Server, Oracle? Если база не Access, то лучше всего запрос к серверу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 13:11 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
Да, раскидку можно сделать и без опорной таблицы и перекрёстного запроса, чисто пачкой из 24 IIF-ов... и даже работать будет. Хочешь - делай так. А вот опорная таблица дат (статическая или динамическая) - тебе в любом случае понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 13:12 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
studieren, База Access Тип данных полей "ВремяНачРаботы" и "ВремяОкончРаботы": Дата/Время ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 13:18 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
А вообще текст запроса будет выглядеть примерно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Только сразу предупреждаю, что если "ВремяНачРаботы" и "ВремяОкончРаботы" разные даты (т.е. ночная смена: человек пришёл 21:00, а ушёл скажем 4:00 утра следующего дня), то запрос слегка будет врать. Такие случае надо будет чуть-чуть по другому обработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 13:24 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
studierenесли "ВремяНачРаботы" и "ВремяОкончРаботы" разные датыНу вообще-то структура предполагает, что такого нет (т.е. ВремяНачРаботы<=ВремяОкончРаботы), а такого рода факт формирует две записи с разными датами, иначе струтура просто кривая. Да и вообще неясно, нафига надо было рубить дату-время на две части. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 13:29 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
Вот, все делают SUM через IIf. А я почему-то никогда так не делаю... Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 13:47 |
|
Запрос - шахматка по дням и часам
|
|||
---|---|---|---|
#18+
Только сразу предупреждаю, что если "ВремяНачРаботы" и "ВремяОкончРаботы" разные даты (т.е. ночная смена: человек пришёл 21:00, а ушёл скажем 4:00 утра следующего дня), то запрос слегка будет врать. Такие случае надо будет чуть-чуть по другому обработать. Это понятно. И изначально было по постановке 21-24 & 00-04. (не мною придумано, прошу не обсуждать.) Суть с If-ами мне понятна. Спасибо. Честно скажу - хотел этого избежать И еще одно замечание (на всякий случай). Условие IIF д.б. не совсем такое. Код: sql 1.
Время в Access стандартно не имеет значения 24:00, т.е. если сотрудник работает с 19:00 до 24:00, то записано это будет как с 19:00 до 00:00 (по логике д.б. дата следующего дня), т.е. где-то появятся лишние записи. Видимо BETWEEN тут не подойдет. По крайней мере в таком виде. Кстати, согласен с __Michelle - от IIF можно отказаться. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 15:55 |
|
|
start [/forum/topic.php?fid=45&msg=39225537&tid=1613632]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 129ms |
0 / 0 |