|
28 Кб. |
|
| Здравствуйте!!! Помогите найти ошибку в запросе...
Суть данного запроса в следующем: он должен определять количество вакантных штатных единиц на предприятие (вакантные места - это должности в штатном расписании, которые никогда не занимались+частично занятые должности+должности, освободившиеся в результате увольнения сотрудника).
Загвоздка в следующем: запрос работает неправильно хоть и в таблице "Кадры" есть должности которые освободились (например "Администратор" - код 1).
Заранее спасибо!!! | |
|
| |
|
|
|
| Попробуй убрать таблу должности. Пусть в ШР будет сама должность, а не ссылка на нее через код. В запросе вместе с подразделением они разделятся. Ну а там дело техники. | |
|
| |
|
|
|
| Запрос работает обалденно. Просто все занято. Вакансий нет. Вы можете оставить Ваше резюме. Как только появится подходящая Вам вакансия мы с Вами обязательно свяжемся. | |
|
| |
|
|
|
| Вакансия есть!!! Вот например "Администратор" - код 1, уволен так как дата по заполнена | |
|
| |
|
|
|
| вот sql запрос:
SELECT ШР.КодШР, Подразделения.НаимПодразделения AS Подразделение, Должности.НаимДолжности AS Должность, ШР.Единиц AS Всего, Sum(Кадры.КолСтавок) AS Занято
FROM (Подразделения INNER JOIN (Должности INNER JOIN ШР ON Должности.КодДолжности = ШР.КодДолжности) ON Подразделения.КодПодразделения = ШР.КодПодразделения) LEFT JOIN Кадры ON ШР.КодШР = Кадры.КодШР
WHERE ((([Единиц]-NZ(DSum([Кадры].[КолСтавок],"Кадры","КодШР=" & [ШР].[КодШР] & " AND isnull(ДатаПо)")))>0) AND ((ШР.ДатаС)<=Date()) AND ((ШР.ДатаПо) Is Null))
GROUP BY ШР.КодШР, Подразделения.НаимПодразделения, Должности.НаимДолжности, ШР.Единиц
ORDER BY Подразделения.НаимПодразделения, Должности.НаимДолжности;
Проблема была в функции Sum в поле Занято. Вместо неё следует использовать DSum | |
|
| |
|