小编典典

使用CASE语句的MS Access查询

sql

我只想获取一个表“ b”的值,如果表“ a”的值是“-”如果表“ b”的值是空的,那么即使它是“-”,也要获取表“ a”的值

Microsoft Access对以下查询说“ Missing operator”:

       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表达式行上。


阅读 233

收藏
2021-04-14

共1个答案

小编典典

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

IIF(tsl.activitat <> '', tsl.activitat, ts.activitat ) AS Activitat

我不确定Access是否支持别名LEFT JOIN,但是它可能支持

注意(尽管标签正确),问题的标题可能会很麻烦……大多数人在编写“ MS SQL”时都引用了Transact-SQL(TSQL)。MS SQL
Server使用Transact-SQL,但使用其自己的SQL方言(称为“ Access SQL”,并且在比较中相当有限)的MSAccess不使用Transact-SQL。

2021-04-14