|
|
|
| Всем доброго времени суток. Бьюсь уже неделю, мозги совсем закипели. Есть таблица Сотрудники. В ней есть поля: ФИО, процент1, процент2, дата_изменения.
Где ФИО это инициалы человека, процент1 - это процент от одного вида вала, процент2 - процент от другого вида вала, дата_изменения - с какой даты действуют эти проценты.
ФИО процент1 процент2 дата_изменения
Смирнов 15 10 01.01.2010
Смирнов 10 15 01.03.2010
Зарплата всегда рассчитывается за календарный месяц, то есть берется начальная дата расчетного месяца и конечная дата расчетного месяца. Как сделать что бы проценты брались из таблицы в зависимости от даты календарного месяца и даты изменения? Делал цикл по таблице, но блин совсем запутался. | |
|
| |
|
|
|
| 1. Создайте и сохраните Запрос1 с группировкой по ФИО, Max(дата_изменения) As дата_изменения и WHERE дата_изменения <= [конечная дата расчетного месяца]. Он возвратит вам для каждого ФИО самую свежую дату.
2. Создайте Запрос2, в котором свяжите Таблицу и Запрос1 по полям ФИО и дата_изменения. Он вернет вам желаемое | |
|
| |
|
|
|
| ОК, сейчас попробую. О результатах отпишусь | |
|
| |
|
|
|
| Не получается. Набил в таблицу 4 записи с изменением процентов с шагом изменения в один месяц. И первый и второй запросы выдают по две записи. А если шаг изменения будет в 2 месяца? | |
|
| |
|
|
|
| Запрос1:
SELECT Таблица1.ФИО, Max(Таблица1.дата_изменения) AS дата_изменения
FROM Таблица1
WHERE (((Таблица1.дата_изменения)<=[конечная дата расчетного месяца]))
GROUP BY Таблица1.ФИО;
Запрос2:
SELECT Таблица1.*
FROM Таблица1 INNER JOIN Запрос1 ON (Таблица1.дата_изменения = Запрос1.дата_изменения) AND (Таблица1.ФИО = Запрос1.ФИО);
Проверено. | |
|
| |
|
|
|
| Сейчас попробую, только до компа добрался | |
|
| |
|
|
|
| Все, спасибо огромное, разобрался. Вроде заработало все как надо. | |
|
| |