|
59 Кб. |
|
| Здравствуйте помогите составить запрос который выбирает сотрудников, которые были переведены.
Перевод осуществляется следующим образом:
при переводе номер приказа имеет вид */2, то есть в конце стоит 2
при переводе сотрудник со старым табельным номером вносится в таблицы КадрыАрхив (номер приказа об увольнение */2) и Кадры(номер приказа о приеме */2)
сотрудник может несколько раз переводиться из подразделения в подразделение (это соответственно фиксируется в таблице КадрыАрхив)
Цель запроса вести историю переводов сотрудника. | |
|
| |
|
|
|
| Что то вроде этого:
SELECT КадрыАрхив.ИНК, КадрыАрхив.ТабНомер, КадрыАрхив.КодШР, КадрыАрхив.КолСтавок, КадрыАрхив.ДатаС, КадрыАрхив.ДатаПо, КадрыАрхив.НомерПриказаПрием, КадрыАрхив.НомерПриказаУвол
FROM КадрыАрхив
WHERE (((Right([НомерПриказаПрием],1))=2)) OR (((Right([НомерПриказаУвол],1))=2)); | |
|
| |
|
|
|
| Или так, где есть последняя должность:
SELECT Кадры.ИНК, Кадры.ТабНомер AS LastТабНомер, Кадры.КодШР AS LastКодШР, КадрыАрхив.ТабНомер, КадрыАрхив.КодШР, КадрыАрхив.КолСтавок, КадрыАрхив.ДатаС, КадрыАрхив.ДатаПо, КадрыАрхив.НомерПриказаПрием, КадрыАрхив.НомерПриказаУвол
FROM Кадры LEFT JOIN КадрыАрхив ON Кадры.ИНК = КадрыАрхив.ИНК
WHERE (((Right([КадрыАрхив].[НомерПриказаПрием],1))=2)) OR (((Right([КадрыАрхив].[НомерПриказаУвол],1))=2)); | |
|
| |
|
|
|
| Спасибо а можете на основе этого запроса помочь мне составить отчет где бы отображалась следующая информация
информация о прежнем месте работы
-категория
-подразделение
-должность
-оклад
-количество ставок
-табельный номер
информация о новом месте работы
-категория
-подразделение
-должность
-оклад
-количество ставок
-табельный номер | |
|
| |
|
|
|
| А форма отчета? Тут дело сугубо индивидуальное. | |
|
| |
|
|
|
| Мне просто нужно, чтобы на одном листе в соответствии с выбранным табельным номером выводились данные о том откуда и куда перевели сотрудника | |
|
| |
|
|
|
| Наверно что то вроде этого:
SELECT Кадры.ИНК, Last(Кадры.КодКатегории) AS newКодКатегории, Last(ШР.КодПодразделения) AS newКодПодразделения, Last(ШР.КодДолжности) AS newКодДолжности, Last(ШР.Оклад) AS newОклад, Last(Кадры.КолСтавок) AS newКолСтавок, Last(Кадры.ТабНомер) AS newТабНомер, Last(КадрыАрхив.КодКатегории) AS oldКодКатегории, Last(ШР_1.КодПодразделения) AS oldКодПодразделения, Last(ШР_1.КодДолжности) AS oldКодДолжности, Last(ШР_1.Оклад) AS oldОклад, Last(КадрыАрхив.КолСтавок) AS oldКолСтавок, Last(КадрыАрхив.ТабНомер) AS oldТабНомер
FROM (ШР RIGHT JOIN (Кадры LEFT JOIN КадрыАрхив ON Кадры.ИНК = КадрыАрхив.ИНК) ON ШР.КодШР = Кадры.КодШР) LEFT JOIN ШР AS ШР_1 ON КадрыАрхив.КодШР = ШР_1.КодШР
WHERE (((Right([КадрыАрхив].[НомерПриказаПрием],1))=2)) OR (((Right([КадрыАрхив].[НомерПриказаУвол],1))=2))
GROUP BY Кадры.ИНК; | |
|
| |
|
|
|
| Спасибо, lulukyan!!!! А можно сделать так чтобы просматривалась такая же история и по архиву. Сейчас мы можем видеть данные только о тех кто на данный момент работает.
Можно ли создать аналогичный запрос для отобора сотрудников из архива (т.е. с указанием информации о предыдущем и следующим местами работы), а затем с помощью UNION объединить эти два запрса | |
|
| |
|
|
|
| Я как программист со стажем могу сказать: " В программировании нет ничего невозможного (с) " :-)
В этом запросе нужно включить таблицу КадрыАрхив два раза и связать поле НомерПриказаПрием одной с полем НомерПриказаУвол другой | |
|
| |
|
|
|
| А можете на примере показать, а то у меня же самое выдает. Заранее сасибо Вам!!! | |
|
| |
|
27 Кб. |
|
| см. в прикрепленном файле. Там два запроса Q1 и Q2 и один объединяющий их Qall | |
|
| |
|