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”,该查询/表是否包含您需要的字段?