Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с SQL запросом  [new]
KonstMV
Member

Откуда:
Сообщений: 21
Есть таблица:
CREATE TABLE TJournal
(ID_Journal int IDENTITY PRIMARY KEY,
Employee_ID int NOT NULL,
Document nvarchar(30) NOT NULL,
DataS datetime NOT NULL,
DataPo datetime)
В ней хранятся документы: "направление на работу" (ID_Journal, Employee_ID, DataS, DataPo) и "обходной" (ID_Journal, Employee_ID, DataS).
Необходимо найти те документы "направление на работу", у которых DataPo < текущей даты и в таблице отсутствует документ "обходной", у которого DataS входит в диапазон дат DataS и DataPo документа "направление на работу" и Employee_ID у этих документов идентичный.
Заранее спасибо!
22 авг 12, 10:51    [13047558]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запросом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
KonstMV
Необходимо найти те документы "направление на работу", у которых DataPo < текущей даты и в таблице отсутствует документ "обходной", у которого DataS входит в диапазон дат DataS и DataPo документа "направление на работу" и Employee_ID у этих документов идентичный.
Заранее спасибо!
А какой ваш вариант?
22 авг 12, 11:04    [13047638]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запросом  [new]
KonstMV
Member

Откуда:
Сообщений: 21
alexeyvg,
Пока могу найти только "направления на работу" с обходными. А вот как найти без обходных?
//Показываем сотрудников, у которых есть направления на работу и обходной к этим направлениям
SELECT first.Employee_ID, first.Document, first.DataS, first.DataPo, second.DataS
FROM TJournal first, TJournal second
WHERE first.Document = 'направление на работу' AND (second.Employee_ID = first.Employee_ID AND second.Document = 'обходной' AND second.DataS >= first.DataS AND second.DataS <= first.DataPo)
22 авг 12, 11:08    [13047672]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запросом  [new]
aleks2
Guest
select N.*
from 
(select * from TJournal where DataPo < getdate())  N
left outer join 
(select * from TJournal where DataPo is null)  O
on 
N.Employee_ID = O.Employee_ID
O.DataS between N.DataS and N.DataPo
where O.Employee_ID is null
22 авг 12, 11:28    [13047844]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запросом  [new]
KonstMV
Member

Откуда:
Сообщений: 21
aleks2,
Ошибка "Неправильный синтаксис около конструкции "O"
22 авг 12, 11:38    [13047945]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запросом  [new]
KonstMV
Member

Откуда:
Сообщений: 21
aleks2
Спасибо большое! Разобрался.
22 авг 12, 11:50    [13048042]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL запросом  [new]
edyaN
Member

Откуда: Berlin
Сообщений: 185
KonstMV,
надо
and 
в условии на соединение добавить.
не надо думать, что здесь Вам предложат готовые решения. Надо быть готовым самому разбираться.
Удачи!
22 авг 12, 11:51    [13048063]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить