MS Access Query中的语法错误

时间:2016-05-27 11:26:01

标签: sql ms-access

我的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;

有人知道问题是什么吗?

提前致谢。

2 个答案:

答案 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;

甚至不需要条件逻辑。