带有CASE语句的MS Access Query

时间:2017-04-24 07:41:51

标签: sql ms-access select case

我只想获得一张桌子的价值" 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表达式行上。

1 个答案:

答案 0 :(得分:1)

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

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

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

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