Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите, пожалуйста, составить запрос!!! :0(
|
|||
|---|---|---|---|
|
#18+
Есть поле дат (от 01.01.1997 до 04.12.2001). Но какие-то даты отсутствуют (праздники, выходные и т.д.) Необходимо вывести те даты, которых в таблице нет. Понимаю, что вопрос типичный, но , полистав форум, ответа не нашел (может проглядел?) Один вариант я знаю (сделать таблицу с датами без пропусков и сравнить с исходной, но... это топорно). Можно ли сделать это запросом, а не хранимой процедурой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2001, 13:06 |
|
||
|
Помогите, пожалуйста, составить запрос!!! :0(
|
|||
|---|---|---|---|
|
#18+
Так как отсутствующие даты - объекты виртуальные, в реальных таблицах их нет, то чтобы их получить в виде результата, их нужно создавать. Это должна быть постоянная или временная таблица. Других способов, помоему, не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2001, 13:37 |
|
||
|
Помогите, пожалуйста, составить запрос!!! :0(
|
|||
|---|---|---|---|
|
#18+
На самом деле вариант с таблицей с датами без пропусков не такой уж топорный. Еще лучше иметь таблицу просто с числами, допустим от 0 до 999. В данном случае, учитывая что праздники не бывают больше 4-х дней можно написать так: Допустим у нас таблица Dates(date datetime) select destinct dateadd(dd,n.i,d1.date) date from Dates d1, (select 1 i union select 2 union select 3 union select 4) as n where not exists(select * from Dates d2 where d2.date=dateadd(dd,n.i,d1.date)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2001, 13:43 |
|
||
|
Помогите, пожалуйста, составить запрос!!! :0(
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо всем!!! P.S. Я тоже думал, откуда же мне взять даты которых в таблице нет... 2 SergSuper За Ваш запрос огромное спасибо - интересная "штучка". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2001, 14:04 |
|
||
|
Помогите, пожалуйста, составить запрос!!! :0(
|
|||
|---|---|---|---|
|
#18+
как говорится, решение в лоб, но дешево, надежно и практично use pubs go set nocount on create table dates (date datetime) insert into dates values('20010101') insert into dates values('20010102') insert into dates values('20010103') insert into dates values('20010105') insert into dates values('20010106') insert into dates values('20010108') insert into dates values('20010110') insert into dates values('20010112') insert into dates values('20010113') insert into dates values('20010116') insert into dates values('20010117') insert into dates values('20010122') insert into dates values('20010123') insert into dates values('20010125') insert into dates values('20010126') insert into dates values('20010130') select date from dates order by 1 create table #dates (date datetime) declare @i datetime, @j datetime select @i = min(date), @j = max(date) from dates while (@i < @j) begin if not exists (select date from dates where date = @i) insert into #dates values(@i) Set @i = @i + 1 end select * from #dates order by 1 drop table #dates drop table dates set nocount off ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2001, 16:23 |
|
||
|
Помогите, пожалуйста, составить запрос!!! :0(
|
|||
|---|---|---|---|
|
#18+
В общем случае дата может отсутствовать или присутствовать по разным причинам. Если анализ этих причин не требуется, то все выше сказанное имеет смысл. Если же требуется отделить выходы на работу во внеурочное время (по выходным и праздникам) от выходов на работу по субботам и воскресеньям, на которые официально были перенесены отработки присоединенных к праздикам дней... Либо если требуется отделить невыход на работу по причине прогула от невыхода на работу в промежутке понедельник-пятница по причине праздника... ... То я в таких случаях завожу пару таблиц исключений из общего правила. В одной я коллекционирую субботы и воскресения, которые официально являются рабочими. В другую я заношу понедельники-пятницы, которые официально являются праздничными (не рабочими). Для полной картины можно еще завести таблицу с сокращенными рабочими днями. Лично мне сокращенные рабочие дни не нужны. Я использую только две таблицы исключений, и с их помощью могу расчитать количество банковских дней между двумя любыми датами. не знаю, какая задача стоит у тебя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2001, 17:20 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32018424&tid=1824722]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 413ms |

| 0 / 0 |
