【问题标题】:SQL Access Iif(aantal_instroom) as instroomSQL Access Iif(antal_instroom) 作为 instroom
【发布时间】:2017-02-24 13:27:08
【问题描述】:

我有这个:

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 "

我需要改变的是:

“Iif(IsNull(voorraad_gisteren), 0, voorraad_gisteren) AS instroom”。

必须是:

“Iif(IsNull(aantal_instroom), 0, aantal_instroom) AS instroom”。

问题在于它来自另一个名为 instroom 的表。我没有自己做的查询,我的查询技能有限,所以我尝试了这个:

"Iif(IsNull(Select aantal_instroom From instroom), 0, aantal_instroom) AS instroom"

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

有人知道怎么做吗?

【问题讨论】:

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

标签: sql ms-access


【解决方案1】:

首先有一个更好的方法:

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

我也同意使用与表名相同的字段别名可能是一个坏主意并且将来会引起混乱的评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多