我试图计算是否满足某个条件,在这种情况下如果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观察者中有所统计(当时只有少数Iif)
答案 0 :(得分:1)
您可以在[Antal Observationer]专栏中使用这样的内容:
Sum(IIf([TVObs].[TVObsKode] IN ("RB","OB","PF",..."OK"),1,0)) AS [Antal Observationer]
但最好将代码列表存储在单独的表中,并将主查询与此表连接