Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Найти первый "пустой" день  [new]
СтраждущийТоварищЪ
Guest
Есть таблица которая содержит строку "Дата работы","ИД сотрудника". Найти первую дату у каждого сотрудника когда он не вышел на работу (нет записи на эту дату) если эта дата не суббота и не воскресенье.
1 ноя 13, 16:48    [15066215]     Ответить | Цитировать Сообщить модератору
 Re: Найти первый "пустой" день  [new]
СтраждущийТоварищЪ
Guest
+ Если данных нет, то первая возможная дата, если все то последняя +1
Можно как то это просто сделать ?
1 ноя 13, 16:55    [15066271]     Ответить | Цитировать Сообщить модератору
 Re: Найти первый "пустой" день  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
СтраждущийТоварищЪ,
группируешь по сотрудникам, выводишь у каждого минимальную дату, исключаешь сб и вскр.
1 ноя 13, 16:56    [15066277]     Ответить | Цитировать Сообщить модератору
 Re: Найти первый "пустой" день  [new]
СтраждущийТоварищЪ
Guest
он мог в одну дату не выйти а потом выйти. дату первого невыхода не в выходные.
1 ноя 13, 16:59    [15066297]     Ответить | Цитировать Сообщить модератору
 Re: Найти первый "пустой" день  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
СтраждущийТоварищЪ
Есть таблица которая содержит строку "Дата работы","ИД сотрудника". Найти первую дату у каждого сотрудника когда он не вышел на работу (нет записи на эту дату) если эта дата не суббота и не воскресенье.

ищи где lead дата (если она нулл - подставляй сегодня) больше чем текущая больше чем на один день (или на 3 если текущая пятница)
1 ноя 13, 17:09    [15066334]     Ответить | Цитировать Сообщить модератору
 Re: Найти первый "пустой" день  [new]
Glory
Member

Откуда:
Сообщений: 104751
СтраждущийТоварищЪ
Есть таблица которая содержит строку "Дата работы","ИД сотрудника". Найти первую дату у каждого сотрудника когда он не вышел на работу (нет записи на эту дату) если эта дата не суббота и не воскресенье.

Берете таблицу-календарь.
Фильтруете ее, исключая выходные
Соединяете с вашей таблицей по дате
Выбираете записи, которым не нашлось совпадение.
1 ноя 13, 17:29    [15066425]     Ответить | Цитировать Сообщить модератору
 Re: Найти первый "пустой" день  [new]
СтраждущийТоварищЪ
Guest
2Glory
Я именно так и хотел сделать, решил что это очень трудоемко и есть более простое решение.
Хотя, пожалуй календарь не так уж и плох.

СтраждущийТоварищЪ
Есть таблица которая содержит строку "Дата работы","ИД сотрудника". Найти первую дату у каждого сотрудника когда он не вышел на работу (нет записи на эту дату) если эта дата не суббота и не воскресенье.

ищи где lead дата (если она нулл - подставляй сегодня) больше чем текущая больше чем на один день (или на 3 если текущая пятница)


Да что то в этом роде буду пробовать. Всем спасибо !
1 ноя 13, 17:37    [15066476]     Ответить | Цитировать Сообщить модератору
 Re: Найти первый "пустой" день  [new]
Roul_Duke
Member

Откуда: Киев
Сообщений: 89
СтраждущийТоварищЪ,

Товарищь, есть функция DatePart(dw,getdate()) - которая возращает число от 1 до 7 - это день недели, где 1- это воскресенье, а 7 это суббота, с помощью этого уберёте выходные, а потом юзайте аналитические функции lead и lag...или подзапросы ;)
2 ноя 13, 01:57    [15068250]     Ответить | Цитировать Сообщить модератору
 Re: Найти первый "пустой" день  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Roul_Duke
СтраждущийТоварищЪ,

Товарищь, есть функция DatePart(dw,getdate()) - которая возращает число от 1 до 7 - это день недели, где 1- это воскресенье, а 7 это суббота, с помощью этого уберёте выходные, а потом юзайте аналитические функции lead и lag...или подзапросы ;)
Что за фигня?
SET DATEFIRST 1;
SELECT DatePart(dw,getdate())
SET DATEFIRST 2;
SELECT DatePart(dw,getdate())
2 ноя 13, 13:07    [15068948]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить