Sql 带有CASE语句的MS-Access查询

Sql 带有CASE语句的MS-Access查询,sql,ms-access,select,case,Sql,Ms Access,Select,Case,我只想得到一个表“b”的值,如果表“a”的值是“-” 如果表“b”中的值为空,则获取表“a”的值,即使它是“-” Microsoft Access对此查询显示“缺少操作员”: SELECT ts.data_generacio, ts.estat, ts.exercici, Month(tsl.data) AS Mes, Day(tsl.data) AS Dia, tsl.data,

我只想得到一个表“b”的值,如果表“a”的值是“-” 如果表“b”中的值为空,则获取表“a”的值,即使它是“-”

Microsoft Access对此查询显示“缺少操作员”:

       SELECT   ts.data_generacio, 
        ts.estat, 
        ts.exercici, 
        Month(tsl.data) AS Mes, 
        Day(tsl.data)   AS Dia, 
        tsl.data, 
        tsl.cod_treb, 
        t.nom_treb, 
        tsl.hores, 
        p.cod_proj, 
        p.acronim       AS nom_proj,
        j.justificacio, 
        tsl.timesheet_id, 
        p.ref,
        CASE WHEN tsl.activitat != '' THEN tsl.activitat ELSE ts.activitat END AS Activitat 
FROM    timesheet_lines AS tsl 
        LEFT JOIN timesheets      AS ts 
        ON tsl.timesheet_id = ts.id 
            LEFT JOIN treballadors AS t 
            ON tsl.cod_treb = t.cod_treb 
                LEFT JOIN justificacions AS 
                ON ts.id_justificacio = j.id 
                    LEFT JOIN projectes AS p 
                    ON j.cod_proj = p.cod_proj;

我认为错误在CASE表达式行。

MS Access不支持
CASE
语句。使用
IIF

IIF(tsl.activitat <> '', tsl.activitat, ts.activitat ) AS Activitat
IIF(tsl.activitat“”、tsl.activitat、ts.activitat)作为activitat
我不确定Access是否支持
LEFT JOIN
上的别名,但它可能支持


注意(尽管标记正确),问题的标题可能会很麻烦。。。大多数人在编写“MS SQL”时都会提到Transact-SQL(TSQL)。Transact-SQL由MS SQL Server使用,但不是由MS Access使用,后者使用自己的SQL方言(称为“Access SQL”,比较起来非常有限)

这是一个大小写表达式,而不是语句…每次删除一行,以查找错误何时消失。没有帮助…所以您找不到错误行?!?错误行位于大小写表达式行。