MS Access查询,IIF函数返回错误,因为“没有为一个或多个必需参数提供值”

问题描述 投票:0回答:1

我有访问查询,该查询执行并集,分组,获取最大值,左联接和IIF(isNull)函数。enter image description here我必须合并三个子表并按列“ mainid”分组,从“时间”列中获取最大值,作为“ MaxSubTime”,并且mainid列由mainTable.id过滤。然后我将LEFT Join 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”过滤最终查询时,出现此错误“没有为一个或多个必需参数提供值”。我在哪里做谜题?

ms-access-2010
1个回答
0
投票

我通过使用“ Having”子句并稍加编辑我的代码解决了这个问题

string myQry = "SELECT MainTable.id, MainTable.sttime, a.MaxSubTime
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 HAVING MaxSubTime >= #" + DateTime.Now + "#)
AS a ON a.mainid = MainTable.id) WHERE MainTable.endtime >= #" + DateTime.Now + "# "
© www.soinside.com 2019 - 2024. All rights reserved.