太多 Iif - 查询表达式中的表达式太复杂 - 替代解决方案?
Too many Iif - Expression too complex in query expression - Alternative solutions?
我正在尝试计算是否满足特定条件,在这种情况下,如果 RB 为真,则应该计算它。
当我只需要使用几个 Iif 进行计数时,我已经让它按应有的方式工作了。
但是下面的例子超出了 Iif 语句允许的数量(获取表达式在查询表达式中太复杂)。
SELECT Sanering_af_hoved_og_stikledninger.LedningsID, Sanering_af_hoved_og_stikledninger.OpstroemKnudeID, Sanering_af_hoved_og_stikledninger.OpstrømsKnudeNavn, Sanering_af_hoved_og_stikledninger.Opstrømsdybde, Sanering_af_hoved_og_stikledninger.NedstroemKnudeID, Sanering_af_hoved_og_stikledninger.Nedstrømsdybde, Sanering_af_hoved_og_stikledninger.NedstrømsKnudeNavn, Sanering_af_hoved_og_stikledninger.Laengde, Sanering_af_hoved_og_stikledninger.Handelsmaal, Sanering_af_hoved_og_stikledninger.Materiale, Sanering_af_hoved_og_stikledninger.TVObsKode,
Count(IIf([TVObs].[TVObsKode]="RB",
True,IIf([TVObs].[TVObsKode]="OB",
True,IIf([TVObs].[TVObsKode]="PF",
True,IIf([TVObs].[TVObsKode]="DE",
True,IIf([TVObs].[TVObsKode]="FS",
True,IIf([TVObs].[TVObsKode]="IS",
True,IIf([TVObs].[TVObsKode]="RØ",
True,IIf([TVObs].[TVObsKode]="IN",
True,IIf([TVObs].[TVObsKode]="AF",
True,IIf([TVObs].[TVObsKode]="BE",
True,IIf([TVObs].[TVObsKode]="FO",
True,IIf([TVObs].[TVObsKode]="GR",
True,IIf([TVObs].[TVObsKode]="PH",
True,IIf([TVObs].[TVObsKode]="PB",
True,IIf([TVObs].[TVObsKode]="OS",
True,IIf([TVObs].[TVObsKode]="OP",
True,IIf([TVObs].[TVObsKode]="OK",
True,Null)))))))))))))))))) AS [Antal Observationer]
FROM Rorenes_tilstand, Sanering_af_hoved_og_stikledninger
GROUP BY Sanering_af_hoved_og_stikledninger.LedningsID, Sanering_af_hoved_og_stikledninger.OpstroemKnudeID, Sanering_af_hoved_og_stikledninger.OpstrømsKnudeNavn, Sanering_af_hoved_og_stikledninger.Opstrømsdybde, Sanering_af_hoved_og_stikledninger.NedstroemKnudeID, Sanering_af_hoved_og_stikledninger.Nedstrømsdybde, Sanering_af_hoved_og_stikledninger.NedstrømsKnudeNavn, Sanering_af_hoved_og_stikledninger.Laengde, Sanering_af_hoved_og_stikledninger.Handelsmaal, Sanering_af_hoved_og_stikledninger.Materiale, Sanering_af_hoved_og_stikledninger.TVObsKode
ORDER BY Sanering_af_hoved_og_stikledninger.LedningsID;
所以我的问题是,是否有另一种方法可以在不使用 Iif 的情况下执行我指定的操作?下图显示了数据表视图,在 Antal Observationer 中算(当只有几个 Iif 时)
您可以在 [Antal Observationer] 专栏中使用类似这样的内容:
Sum(IIf([TVObs].[TVObsKode] IN ("RB","OB","PF",..."OK"),1,0)) AS [Antal Observationer]
但最好将代码列表存储在单独的 table 中并将主查询与此 table
连接起来
我正在尝试计算是否满足特定条件,在这种情况下,如果 RB 为真,则应该计算它。 当我只需要使用几个 Iif 进行计数时,我已经让它按应有的方式工作了。
但是下面的例子超出了 Iif 语句允许的数量(获取表达式在查询表达式中太复杂)。
SELECT Sanering_af_hoved_og_stikledninger.LedningsID, Sanering_af_hoved_og_stikledninger.OpstroemKnudeID, Sanering_af_hoved_og_stikledninger.OpstrømsKnudeNavn, Sanering_af_hoved_og_stikledninger.Opstrømsdybde, Sanering_af_hoved_og_stikledninger.NedstroemKnudeID, Sanering_af_hoved_og_stikledninger.Nedstrømsdybde, Sanering_af_hoved_og_stikledninger.NedstrømsKnudeNavn, Sanering_af_hoved_og_stikledninger.Laengde, Sanering_af_hoved_og_stikledninger.Handelsmaal, Sanering_af_hoved_og_stikledninger.Materiale, Sanering_af_hoved_og_stikledninger.TVObsKode,
Count(IIf([TVObs].[TVObsKode]="RB",
True,IIf([TVObs].[TVObsKode]="OB",
True,IIf([TVObs].[TVObsKode]="PF",
True,IIf([TVObs].[TVObsKode]="DE",
True,IIf([TVObs].[TVObsKode]="FS",
True,IIf([TVObs].[TVObsKode]="IS",
True,IIf([TVObs].[TVObsKode]="RØ",
True,IIf([TVObs].[TVObsKode]="IN",
True,IIf([TVObs].[TVObsKode]="AF",
True,IIf([TVObs].[TVObsKode]="BE",
True,IIf([TVObs].[TVObsKode]="FO",
True,IIf([TVObs].[TVObsKode]="GR",
True,IIf([TVObs].[TVObsKode]="PH",
True,IIf([TVObs].[TVObsKode]="PB",
True,IIf([TVObs].[TVObsKode]="OS",
True,IIf([TVObs].[TVObsKode]="OP",
True,IIf([TVObs].[TVObsKode]="OK",
True,Null)))))))))))))))))) AS [Antal Observationer]
FROM Rorenes_tilstand, Sanering_af_hoved_og_stikledninger
GROUP BY Sanering_af_hoved_og_stikledninger.LedningsID, Sanering_af_hoved_og_stikledninger.OpstroemKnudeID, Sanering_af_hoved_og_stikledninger.OpstrømsKnudeNavn, Sanering_af_hoved_og_stikledninger.Opstrømsdybde, Sanering_af_hoved_og_stikledninger.NedstroemKnudeID, Sanering_af_hoved_og_stikledninger.Nedstrømsdybde, Sanering_af_hoved_og_stikledninger.NedstrømsKnudeNavn, Sanering_af_hoved_og_stikledninger.Laengde, Sanering_af_hoved_og_stikledninger.Handelsmaal, Sanering_af_hoved_og_stikledninger.Materiale, Sanering_af_hoved_og_stikledninger.TVObsKode
ORDER BY Sanering_af_hoved_og_stikledninger.LedningsID;
所以我的问题是,是否有另一种方法可以在不使用 Iif 的情况下执行我指定的操作?下图显示了数据表视图,在 Antal Observationer 中算(当只有几个 Iif 时)
您可以在 [Antal Observationer] 专栏中使用类似这样的内容:
Sum(IIf([TVObs].[TVObsKode] IN ("RB","OB","PF",..."OK"),1,0)) AS [Antal Observationer]
但最好将代码列表存储在单独的 table 中并将主查询与此 table
连接起来