SQL访问Iif(安塔鲁仪表室)作为仪表室

SQL访问Iif(安塔鲁仪表室)作为仪表室,sql,ms-access,Sql,Ms Access,我有这个: sql = "SELECT " & _ "proces_id, " & _ "proces_naam, " & _ "voorraad, " & _ "voorraad_te_laat, " & _ "voorraad_verificatie, " & _ "voorraad_verificatie_te_laat, " & _

我有这个:

sql = "SELECT " & _
        "proces_id, " & _
        "proces_naam, " & _
        "voorraad, " & _
        "voorraad_te_laat, " & _
        "voorraad_verificatie, " & _
        "voorraad_verificatie_te_laat, " & _
        "teamplanning, " & _
        "teamplanning_verificatie, " & _
        "Iif(IsNull(teamplanning_totaal), 0, teamplanning_totaal) + Iif(IsNull(teamplanning), 0, teamplanning) AS totaal_teamplanning, " & _
        "Iif(IsNull(teamplanning_totaal_verificatie), 0, teamplanning_totaal_verificatie) + Iif(IsNull(teamplanning), 0, teamplanning_verificatie) AS totaal_teamplanning_verificatie, " & _
        "Round(Iif(IsNull(teamplanning), 0, (teamplanning * proces_normtijd * Iif(IsNull(productiviteit_factor), 1, productiviteit_factor)) / 60), 2) AS teamplanning_uren, " & _
        "Round(Iif(IsNull(teamplanning_verificatie), 0, (teamplanning_verificatie * proces_normtijd_verificatie * Iif(IsNull(productiviteit_factor), 1, productiviteit_factor)) / 60), 2) AS teamplanning_uren_verificatie, "
    If IsNull(Datum) Then
        sql = sql & "null AS verschil, " & _
            "null AS verschil_verificatie, "
    Else
        sql = sql & "Iif(IsNull(voorraad), 0, voorraad) - Iif(IsNull(teamplanning), 0, teamplanning) - Iif(IsNull(teamplanning_totaal), 0, teamplanning_totaal) AS verschil, " & _
            "Iif(IsNull(voorraad_verificatie), 0, voorraad_verificatie) - Iif(IsNull(teamplanning_verificatie), 0, teamplanning_verificatie) - Iif(IsNull(teamplanning_totaal_verificatie), 0, teamplanning_totaal_verificatie) AS verschil_verificatie, "
    End If
    sql = sql & "proces_normtijd, " & _
        "proces_normtijd_verificatie, " & _
        "Iif(IsNull(realisatie_cases), 0, realisatie_cases) AS realisatie_cases_aantal, " & _
        "Iif(IsNull(realisatie_cases_verificatie), 0, realisatie_cases_verificatie) AS realisatie_cases_aantal_verificatie, " & _
        "Iif(IsNull(ingeplande_cases), 0, ingeplande_cases) AS ingeplande_cases_aantal, " & _
        "Iif(IsNull(ingeplande_cases_verificatie), 0, ingeplande_cases_verificatie) AS ingeplande_cases_aantal_verificatie, " & _
        "volgorde, "
    sql = sql & "Iif(IsNull(voorraad_gisteren), 0, voorraad_gisteren) AS instroom, " & _
        "Iif(IsNull(voorraad_verificatie_gisteren), 0, voorraad_verificatie_gisteren) AS instroom_verificatie "
    sql = sql & "FROM tmp_planning_proces " & _
        "WHERE userid = '" & EscapeString(LCase(mod_global.RealUser)) & "' " & _
        "AND team_id = " & TeamID & " " & _
        IIf(IsNull(MedewerkerGroepID), "AND medewerker_groep_id is null ", "AND medewerker_groep_id = " & MedewerkerGroepID & " ") & _
        IIf(IsNull(Datum), "AND week = " & week & " AND jaar = " & jaar & " ", "AND datum = #" & Format(Datum, "yyyy-mm-dd") & "# ") & _
        "ORDER BY volgorde ASC "
我需要改变的是:

IifIsNullvoorraad_gisteren,0,voorraad_gisteren作为仪表室

它需要:

IIFISnullantal_仪表室,0,aantal_仪表室作为仪表室

问题是它来自另一张名为instroom的桌子。我没有亲自进行查询,而且我的查询技能有限,因此我尝试了以下方法:

IIFISNULL从仪表室0中选择安塔尔仪表室,安塔尔仪表室作为仪表室

但这不起作用,突然没有数据出现了


有人知道怎么做吗?

首先有一个更好的方法:

IIf(IsNull(voorraad_gisteren), 0, voorraad_gisteren)
它是:

Nz(voorraad_gisteren, 0)
现在谈谈你的问题。首先,您必须确保表instroom是SQL语句FROM部分的一部分。例如:

FROM tmp_planning_proces INNER JOIN instroom ON ... [whatever fields link the two tables together]
然后您可以像这样引用表上的任何字段:

instroom.aantal_instroom

IIf(IsNull(instroom.aantal_instroom), 0, instroom.aantal_instroom) AS instroom
或者更好:

Nz(instroom.aantal_instroom,0) AS instroom

我也同意这样的评论,即使用与表名相同的字段别名可能是个坏主意,将来肯定会引起混淆。

首先,您的查询中没有包含表“instroom”,因此SQL对该表或其中的任何字段一无所知。第二,添加该表后,请注意,您为字段指定了别名并将其命名为“instroom”,这会让其他查看该字段的人感到困惑。此外,由于上述查询基于查询或表“tmp\u planning\u proces”,该查询/表是否包含您需要的字段?