我的MS Access记录源中出现语法错误(“Missing Operator”)。 SQL Server 2012执行它没有问题但是当我让Access 2016执行它时,我收到此错误。我希望Access有不同的case语句要求,但我不确定。
SELECT
r.Rubrieknaam,
CASE
WHEN (SELECT count(Voorwerpnummer)
FROM VoorwerpInRubriek
WHERE rubrieknummer = r.Rubrieknummer) IS NULL
THEN 0
ELSE (SELECT count(Voorwerpnummer)
FROM VoorwerpInRubriek
WHERE rubrieknummer = r.Rubrieknummer)
END AS [nInRubriek],
CASE
WHEN (SELECT Count(*)
FROM Rubriek
WHERE HoofdrubriekNr = r.rubriekNummer) IS NULL
THEN 0
ELSE (SELECT Count(*)
FROM Rubriek
WHERE HoofdrubriekNr = r.rubriekNummer)
END AS [nSubrubrieken],
CASE
WHEN (SELECT Rubrieknaam
FROM Rubriek
WHERE Rubrieknummer = r.hoofdrubrieknr) IS NULL
THEN 'N.V.T.'
ELSE (SELECT Rubrieknaam
FROM Rubriek
WHERE Rubrieknummer = r.hoofdrubrieknr)
END AS [Hoofdrubrieknaam]
FROM
Rubriek r;
有人知道问题是什么吗?
提前致谢。
答案 0 :(得分:2)
是。 CASE-ELSE
是T-SQL。
在Access SQL中使用IIf(expression, true expression, false expression)
。
答案 1 :(得分:1)
查询应如下所示:
SELECT r.Rubrieknaam,
(SELECT count(Voorwerpnummer) FROM VoorwerpInRubriek WHERE rubrieknummer = r.Rubrieknummer
) AS [nInRubriek],
(SELECT Count(*) FROM Rubriek WHERE HoofdrubriekNr = r.rubriekNummer
) AS [nSubrubrieken],
NZ(Rubrieknaam, "N.V.T.") AS [Hoofdrubrieknaam]
FROM Rubriek r;
甚至不需要条件逻辑。