Sql 使用IIF功能,根据多个字段的组合显示一个参数/字段

Sql 使用IIF功能,根据多个字段的组合显示一个参数/字段,sql,ms-access,Sql,Ms Access,我需要MS Access的帮助。下面是要使用的3个表 逻辑: 我需要一个查询,该查询应获取总账、分行和住所(在同一表格中)的基础组合中的增值税。例如: VAT_Inclusion Branch|Local_GL_Start|Local_GL_end|Domicile|VATRATE ------+--------------+------------+--------+------- 21 |40000 |50000 |UK |9 住所详细信息:根

我需要MS Access的帮助。下面是要使用的3个表

逻辑:

我需要一个查询,该查询应获取总账、分行和住所(在同一表格中)的基础组合中的增值税。例如:

VAT_Inclusion

Branch|Local_GL_Start|Local_GL_end|Domicile|VATRATE
------+--------------+------------+--------+-------
 21   |40000         |50000       |UK      |9
住所详细信息:根据
GRT
表中的本地客户id和
住所
表中的本地客户id获取<代码>GRT不包含住所,但
住所
包含住所

我准备了一个问题(见下文末尾),但面临一些问题,以供参考

GRT
表格格式输出:

Branch|Local_GL| Local_CUST_ID|VAT RATE
------+--------+--------------+--------
21    | 40010  |  CUST_223    |9 
输出应具有来自
GRT
的数据,其中包含分支as 21和
VAT_Inclusion
中给出的范围内的本地总账(此处为40010)

  • GRT表(源/原始文件)

    分行|本地|总账|本地|客户ID

  • 增值税包含表:要选择的总账范围

    分行|本地|总账|起点|本地|总账|终点|住所|增值税

  • 住所表

    Local_CUST_ID|住所



  • 请求您帮助解决此问题。它没有显示所需的增值税税率。它只显示7作为所有人的增值税税率。

    您的SQL有几个拼写错误(AT而不是VAT),需要删除和之前的“”。请尝试以下操作:

    SELECT GRT.*, IIf([GRT].[Branch]=[VAT_Inclusion].[Branch] And ([GRT].[local_GL] Between [VAT_Inclusion].[Local_GL_Start] And [VAT_Inclusion].[Local_GL_Start]) And ([VAT_Inclusion].[Domicile]=[Domicile_out].[Domicile]),[VAT_Inclusion].[VATRATE],"7") AS Expr1
    FROM VAT_Inclusion, GRT, (select GRT.Local_CUST_ID, DOMICILE.Local_CUST_ID, DOMICILE.DOMICILE 
    from GRT, DOMICILE 
    where GRT.Local_CUST_ID=DOMICILE.Local_CUST_ID)  AS Domicile_out
    WHERE (((GRT.Branch)=[VAT_Inclusion].[Branch]) AND ((GRT.local_GL) Between [VAT_Inclusion].[Local_GL_Start] And [VAT_Inclusion].[Local_GL_Start]) AND ((VAT_Inclusion.Domicile)=[Domicile_out].[Domicile]));
    
    SELECT GRT.*, IIf([GRT].[Branch]=[VAT_Inclusion].[Branch] And ([GRT].[local_GL] Between [VAT_Inclusion].[Local_GL_Start] And [VAT_Inclusion].[Local_GL_Start]) And ([VAT_Inclusion].[Domicile]=[Domicile_out].[Domicile]),[VAT_Inclusion].[VATRATE],"7") AS Expr1
    FROM VAT_Inclusion, GRT, (select GRT.Local_CUST_ID, DOMICILE.Local_CUST_ID, DOMICILE.DOMICILE 
    from GRT, DOMICILE 
    where GRT.Local_CUST_ID=DOMICILE.Local_CUST_ID)  AS Domicile_out
    WHERE (((GRT.Branch)=[VAT_Inclusion].[Branch]) AND ((GRT.local_GL) Between [VAT_Inclusion].[Local_GL_Start] And [VAT_Inclusion].[Local_GL_Start]) AND ((VAT_Inclusion.Domicile)=[Domicile_out].[Domicile]));