Подзапрос внутри TRANSFORM

Ivashenko Lev
Дата: 28.11.2006 18:31:07
Потребовалось применить такую конструкцию:

TRANSFORM First(Значение)
SELECT ID_реплики, ID_объекта, ID_записи, Дата
FROM Экземпляры AS a
WHERE ID_реплики = 1
AND ID_объекта = 10
AND Дата = (SELECT MAX(Дата) FROM Экземпляры b
  WHERE a.ID_реплики = b.ID_реплики
  AND a.ID_объекта = b.ID_объекта
  AND a.ID_записи = b.ID_записи
  AND a.ID_поля = b.ID_поля
  AND b.Дата <= #01/01/2010#)
GROUP BY ID_реплики, ID_объекта, ID_записи, Дата
PIVOT ID_поля

В Access XP получился облом :-( Ругань, что a.ID_реплики не распознается ядром... Если убрать TRANSFORM и PIVOT, то сам SELECT выполняется нормально. У кого под руками Access 2003 или 2007, гляньте плиз хелп, там подзапросы внутри TRANSFORM не сделали ли? Или чем такой подзапрос заменить можно - ничего в голову не приходит. Ну, про два последовательных запроса я в курсе! Хотелось бы все в одном.
Karfaqen
Дата: 28.11.2006 18:58:07
А так:?
TRANSFORM First(a.Значение)
SELECT a.ID_реплики, a.ID_объекта, a.ID_записи, a.Дата
FROM Экземпляры AS a INNER JOIN
(SELECT MAX(Дата) AS MAX_DATA, ID_реплики, ID_объекта, ID_записи, ID_поля
 FROM Экземпляры WHERE Дата <= #01/01/2010#
 GROUP BY ID_реплики, ID_объекта, ID_записи, ID_поля) b
ON a.ID_реплики = b.ID_реплики
AND a.ID_объекта = b.ID_объекта
AND a.ID_записи = b.ID_записи
AND a.ID_поля = b.ID_поля
AND a.Дата = b.MAX_DATA
WHERE a.ID_реплики = 1 AND a.ID_объекта = 10
GROUP BY a.ID_реплики, a.ID_объекта, a.ID_записи, a.Дата
PIVOT a.ID_поля
Ivashenko Lev
Дата: 28.11.2006 19:47:40
Так работает!
Большое спасибо!