在 Access 2007 SQL Select 语句中使用 IIF 表达式

Using IIF expression in Access 2007 SQL Select Statement

我已经非常彻底地四处寻找答案,但我不明白为什么我正在尝试做的事情不起作用:

我正在尝试构建一个查询来为连续表单提供数据。我正在尝试实现类似银行对帐单的功能,其中借方和贷方位于不同的列中。我也想要一个 运行 总数,但我还没有达到那个程度。

这是我的查询:

SELECT ACTransaction.*, TransactionCategory.TC_Description, 
TransactionCategory.TC_Sign, ACCategoryGroup.ACCG_Description, 
ACCategory.ACC_Description, ACCategoryClass.ACCC_Description, 
ACSubCategory.ACSC_Description,  IIf([TC_Sign]="-1",[ACT_ValTTC],"") AS 
Spend, IIf([TC_Sign]="1",[ACT_ValTTC],"") AS Receive
FROM TransactionCategory INNER JOIN (ACSubCategory INNER JOIN 
((ACCategoryClass INNER JOIN (ACCategoryGroup INNER JOIN ACCategory ON 
ACCategoryGroup.ACCG_ID = ACCategory.ACC_CategoryGroupID) ON 
ACCategoryClass.ACCC_ID = ACCategory.ACC_CategoryClassID) INNER JOIN 
ACTransaction ON ACCategory.ACC_ID = ACTransaction.ACT_CategoryID) ON 
ACSubCategory.ACSC_ID = ACTransaction.ACT_SubCategoryID) ON 
TransactionCategory.ID = ACTransaction.ACT_TransCategoryID;

有很多查找,但关键是我想根据[TC_Sign] 的值可以是“1”或“-1”(它在系统的其他地方用作乘数)。

当查询运行时,我在列中得到#ERROR。最后的手段是填充一个温度。 table 在我的表单中并将其用作表单的数据源,但这非常低效,尤其是因为我必须重建临时文件。 table每增加一笔交易。我宁愿有一个我可以重新查询的查询。请注意...这取决于 hard/impossible 在查询中构建 运行 总数的方式!

提前感谢您的指导。

您的错误可能源于引号。 "-1" 是一个包含文本 -1 的字符串,没有引号,它是一个值为负一的整数。如果您将字符串与整数进行比较,则会出现错误,这就是您在列中得到 #ERROR 的原因。

省略引号,可能 运行 没问题。

SELECT ACTransaction.*, TransactionCategory.TC_Description, 
TransactionCategory.TC_Sign, ACCategoryGroup.ACCG_Description, 
ACCategory.ACC_Description, ACCategoryClass.ACCC_Description, 
ACSubCategory.ACSC_Description,  IIf([TC_Sign]=-1,[ACT_ValTTC],"") AS 
Spend, IIf([TC_Sign]=1,[ACT_ValTTC],"") AS Receive
FROM TransactionCategory INNER JOIN (ACSubCategory INNER JOIN 
((ACCategoryClass INNER JOIN (ACCategoryGroup INNER JOIN ACCategory ON 
ACCategoryGroup.ACCG_ID = ACCategory.ACC_CategoryGroupID) ON 
ACCategoryClass.ACCC_ID = ACCategory.ACC_CategoryClassID) INNER JOIN 
ACTransaction ON ACCategory.ACC_ID = ACTransaction.ACT_CategoryID) ON 
ACSubCategory.ACSC_ID = ACTransaction.ACT_SubCategoryID) ON 
TransactionCategory.ID = ACTransaction.ACT_TransCategoryID;