У меня есть запрос на доступ, который выполняет функции объединения, группировки, получения максимума, левого соединения и IIF (isNull).
Мне нужно объединить три подтаблицы и сгруппировать по столбцу "mainid", получить максимальное значение из столбца "time" как "MaxSubTime", а столбец mainid фильтруется по mainTable.id. Затем я подаю заявку на участие в MainTable в Union-Group. Если MaxSubTime равен Null, тогда я применяю MainTable.endtime к MaxSubTime и получаю его как «MaxMainTableEndTime». пока здесь все работает нормально.
string myQry = "SELECT MainTable.id, MainTable.sttime, IIF(IsNULL(a.MaxSubTime), MainTable.endtime, a.MaxSubTime) AS MaxMainTableEndTime
FROM (MainTable LEFT JOIN (SELECT mainid, MAX(SubTime) AS MaxSubTime
FROM (SELECT Sub_table_1.mainid, Sub_table_1.time AS SubTime FROM Sub_table_1
UNION SELECT Sub_table_2.mainid, Sub_table_2.time AS SubTime Sub_table_2
UNION SELECT Sub_table_3.mainid, Sub_table_3.time AS SubTime Sub_table_3 GROUP BY mainid) AS a ON a.mainid = MainTable.id)
WHERE MaxMainTableEndTime >= #" + DateTime.Now + "# ";
Но когда я фильтрую окончательный запрос по "MaxMainTableEndTime", я получаю эту ошибку "Не задано значение для одного или нескольких обязательных параметров". Где я делаю мистику?