首页 > 解决方案 > 为什么我的查询中出现“函数参数无效”错误?

问题描述

我正在尝试运行此查询:

SELECT qry_performPrep2Elo_wta.PK_G, IIf([ID1_ocEdge]>0,[ID1_ocStake],0) AS ocStake, IIf([ID1_ocEdge]>0,[ID1_ocStake]*([ID1_ocmktPr]-1)) AS ocPL
FROM tbl_G_ov_wta INNER JOIN qry_performPrep2Elo_wta ON tbl_G_ov_wta.PK_G = qry_performPrep2Elo_wta.PK_G
WHERE (((tbl_G_ov_wta.ID1_G_Tot_Ov)>=(SELECT Min_games_wta FROM [tbl_ref_games] WHERE Surface = "All surfaces")));

但我收到“函数参数无效”错误。如果我删除 WHERE 子句并运行以下命令:

SELECT qry_performPrep2Elo_wta.PK_G, IIf([ID1_ocEdge]>0,[ID1_ocStake],0) AS ocStake, IIf([ID1_ocEdge]>0,[ID1_ocStake]*([ID1_ocmktPr]-1)) AS ocPL
FROM tbl_G_ov_wta INNER JOIN qry_performPrep2Elo_wta ON tbl_G_ov_wta.PK_G = qry_performPrep2Elo_wta.PK_G;

一切正常。我调查了 WHERE 子句,但找不到问题的原因。实际上,当我删除 IIF 语句但包含 WHERE 子句时:

SELECT qry_performPrep2Elo_wta.PK_G
FROM tbl_G_ov_wta INNER JOIN qry_performPrep2Elo_wta ON tbl_G_ov_wta.PK_G = qry_performPrep2Elo_wta.PK_G
WHERE (((tbl_G_ov_wta.ID1_G_Tot_Ov)>=(SELECT Min_games_wta FROM [tbl_ref_games] WHERE Surface = "All surfaces")));

一切运行良好。

该字段PK_G是表和查询中通用的主键。

有任何想法吗?

标签: ms-access

解决方案


你在这里错过了零:

IIf([ID1_ocEdge]>0,[ID1_ocStake]*([ID1_ocmktPr]-1),0)

推荐阅读