powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Странный запрос, или как извратиться
2 сообщений из 52, страница 3 из 3
Странный запрос, или как извратиться
    #32838075
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код, Дата из Таблица1 связывается с ближайшей следующей Датой для такого же кода из Таблица2.
Короче платеж привязывается к ближайщей предыдущей дате акта о выполнении.
Код: plaintext
1.
2.
3.
4.
  (select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN    
     Таблица2 Y
    ON X.Код=Y.Код AND X.Дата<=Y.Дата
    GROUP BY X.Код, X.Дата
  ) 

Выдираем из Таблица2 только те строки, что удалось привязать к актам выполнения.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
(SELECT Таблица2.* FROM 
  Таблица2 
  INNER JOIN 
  (select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN    
     Таблица2 Y
    ON X.Код=Y.Код AND X.Дата<=Y.Дата
    GROUP BY X.Код, X.Дата
  ) Z
  ON 
  Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
) T2

Те строки, что удалось привязать к актам выполнения объединяем с соответствующими актами.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT Таблица1.Код, Таблица1.Дата, Таблица1.Акт, Таблица1.Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица1 LEFT JOIN 
(SELECT Таблица2.* FROM 
  Таблица2 
  INNER JOIN 
  (select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN    
     Таблица2 Y
    ON X.Код=Y.Код AND X.Дата<=Y.Дата
    GROUP BY X.Код, X.Дата
  ) Z
  ON 
  Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
) T2
ON 
Таблица1.Код=T2.Код AND Таблица1.Дата=T2.Дата 

Те строки, что НЕудалось привязать к актам выполнения.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT Таблица2.Код, null as Дата, null as Акт, null as Выполнение,
       Таблица2.Дата,Таблица2.п\п,Таблица2.Оплата
FROM Таблица2 LEFT JOIN 
(select X.Код, Max(Y.Дата) as Дата FROM Таблица1 X LEFT JOIN Таблица2 Y
ON X.Код=Y.Код AND X.Дата<=Y.Дата
GROUP BY X.Код, X.Дата
) Z
ON 
Таблица2.Код=Z.Код AND Таблица2.Дата=Z.Дата
WHERE  Z.Код is null

Объединяем
Те строки, что удалось привязать к актам выполнения.
и
Те строки, что НЕудалось привязать к актам выполнения.

Код: plaintext
UNION ALL
...
Рейтинг: 0 / 0
Странный запрос, или как извратиться
    #32839496
Michello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks2
Код: plaintext
UNION ALL
Мощно!

Попробовал. Оказывается, все, что мне нужно, - это ф-ия UNION.
Хорошо, что я увидел Ваши "null as...". Вместо "null" я поставил число "0" и вычисления стали правильными.
Спасибо!
...
Рейтинг: 0 / 0
2 сообщений из 52, страница 3 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Странный запрос, или как извратиться
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]