|
|
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных). Очень нужно. Как одним запросом выбрать промежуток дней, исключая выходные(субботу, воскресенье)? Промежуток дней(выбирается пограммно) например: 10.01.2002 00:00 по 10.07.2002 23:00(исключаются 10.05.2002,10.06.2002-суббота, воскресенье), 10.01.2002 00:00 по 10.31.2002 23:00(исключаются субботы, воскресенья в нем) и т.д. Используется такой запрос: select a_data_general.device , R0=(case when (a_data_general.ats='11')then (Count(a_data_general.ats)/a_por.mar) end), R1=(case when (a_data_general.ats='01')then (Count(a_data_general.ats)/a_por.mar) end), R2=(case when (a_data_general.ats='21')then (Count(a_data_general.ats)/a_por.mar) end) from a_data_general,a_por where (a_data_general.device=a_por.device) and (a_data_general.ats=a_por.ats) and (dt>='10.01.2002 9:00') and (dt<='10.07.2002 18:00') group by a_data_general.ats,a_data_general.device,a_por.mar Как используя его исключить выходные дни? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 11:45:57 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Достаточно использовать функцию DATEPART(wk, date) , который возвращает день недели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 11:51:22 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
А как же это сделать в данном запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:01:56 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
кстати есть методика определения статуса дня в зависимости от дня недели, праздничных дней и всевозможных переносов рабочих дней на выходные если интересует скину скрипты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:05:41 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Скиньте если возможно по адресу r500@rambler.ru. Если можно, продемонстрировать на данном запросе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:10:14 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. если язык соединения US English то первый день недели воскресенье, поменять можно при помощи Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:12:05 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
сорри, скриптик потерялся. напишу попозже -скину. принцип был таков: таблица хранящая даты переноса выходных на будни и будней на выходные состоит из одного поля типа датетиме, хотя наверное лучше сделать его типа int. определение статуса дня выполнено в виде хранимой процедуры. входной параметр - дата - выход истина или ложь. если дата указана в таблице то результат определения выходного дня по принципу суббота-воскресенье - истина инвертируется. в твоем случае не вижу другого способа кроме как как сделать такую процедуру и пробежать по интересующему периоду курсором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:35:45 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Пишу запрос select a_data_general.device , R0=(case when (a_data_general.ats='11')then (Count(a_data_general.ats)/a_por.mar) end), R1=(case when (a_data_general.ats='01')then (Count(a_data_general.ats)/a_por.mar) end), R2=(case when (a_data_general.ats='21')then (Count(a_data_general.ats)/a_por.mar) end) from a_data_general,a_por where (a_data_general.device=a_por.device) and (a_data_general.ats=a_por.ats) and (dt >= '20021007 00:00:00') and (dt <= '20021014 23:59:59') and datepart(hh, dt) >= 1 and datepart(hh, dt) < 23 and datepart(hh, dt) NOT IN (1,7) group by a_data_general.ats,a_data_general.device,a_por.mar ничего не меняется с datepart(hh, dt) NOT IN (1,7) и даже datepart(hh, dt) NOT IN (3,7). Может быть где-то ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:42:44 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Функция DATEPART для возврата дня недели в своим первым параметром должен имет значение wk ( от слова week ) и ты его не должен менять. А второй параметр - дата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:48:36 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
1 DATEPART(wk, list_of_dates ) 2. список дат твоего временного промежутка нужно построить во временной таблице или курсоре ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:49:11 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
я недосмотрел... )) у тебя уже есть дата datepart(wk, dt) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:53:09 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Можно на данном запросе, а то я пока не соображу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:57:09 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 13:00:26 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Использование запроса: select a_data_general.device , R0=(case when (a_data_general.ats='11')then (Count(a_data_general.ats)/a_por.mar) end), R1=(case when (a_data_general.ats='01')then (Count(a_data_general.ats)/a_por.mar) end), R2=(case when (a_data_general.ats='21')then (Count(a_data_general.ats)/a_por.mar) end) from a_data_general,a_por where (a_data_general.device=a_por.device) and (a_data_general.ats=a_por.ats) and (dt >= '20021007 00:00:00') аnd (dt <= '20021014 23:59:59') and datepart(wk, dt) NOT IN (1,7) group by a_data_general.ats,a_data_general.device,a_por.mar ,тоже не помогает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 13:01:35 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
Пробовал написанный вами запрос: select a_data_general.device , R0=(case when (a_data_general.ats='11')then (Count(a_data_general.ats)/a_por.mar) end), R1=(case when (a_data_general.ats='01')then (Count(a_data_general.ats)/a_por.mar) end), R2=(case when (a_data_general.ats='21')then (Count(a_data_general.ats)/a_por.mar) end) from a_data_general,a_por where (a_data_general.device=a_por.device) and (a_data_general.ats=a_por.ats) and (dt >= '20021007 00:00:00') and (dt <= '20021014 23:59:59') and datepart(hh, dt) >= 1 and datepart(hh, dt) < 23 and datepart(wk, dt) NOT IN (1,7) group by a_data_general.ats,a_data_general.device,a_por.mar выдает один и тот же результат для NOT IN (1,7) , NOT IN (3,7) и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 13:05:59 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
для отладки добавь уровень группировки - DT и посмотри в результате свои переменные по датам. у тебя либо данные одинаковые либо формула неверна. например так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 13:19:33 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
DATEPART(wk - возвращает номер недели а DATEPART(dw - возвращает номер дня недели Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 13:23:21 |
|
||
|
Помогите, пожалуйста, составить SQL-запрос по дням(без выходных)
|
|||
|---|---|---|---|
|
#18+
А обязательно ли использовать: set datefirst 1 select datepart(dw, crdate) from sysobjects a group by datepart(dw, crdate) ,так как запрос работает select a_data_general.device , R0=(case when (a_data_general.ats='11')then (Count(a_data_general.ats)/a_por.mar) end), R1=(case when (a_data_general.ats='01')then (Count(a_data_general.ats)/a_por.mar) end), R2=(case when (a_data_general.ats='21')then (Count(a_data_general.ats)/a_por.mar) end) from a_data_general,a_por where (a_data_general.device=a_por.device) and (a_data_general.ats=a_por.ats) and (dt >= '20021007 00:00:00') and (dt <= '20021014 23:59:59') and datepart(hh, dt) >= 1 and datepart(hh, dt) < 23 and datepart(dw, dt) NOT IN (1,7) group by a_data_general.ats,a_data_general.device,a_por.mar Всем большое спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 14:28:44 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32062641&tid=1819245]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 296ms |

| 0 / 0 |
