在 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;
我已经非常彻底地四处寻找答案,但我不明白为什么我正在尝试做的事情不起作用:
我正在尝试构建一个查询来为连续表单提供数据。我正在尝试实现类似银行对帐单的功能,其中借方和贷方位于不同的列中。我也想要一个 运行 总数,但我还没有达到那个程度。
这是我的查询:
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;