带有 CASE 语句的 MS Access 查询

Posted

技术标签:

【中文标题】带有 CASE 语句的 MS Access 查询【英文标题】:MS Access Query with CASE statement 【发布时间】:2017-04-24 07:41:51 【问题描述】:

如果表“a”的值为“-”,我只想获取一个表“b”的值 如果表“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 表达式行上。

【问题讨论】:

这是一个case 表达式,不是语句... 一次删除一行,查找错误何时消失。 没有帮助.... 所以找不到错误行?!? 错误行在Case表达式行。 【参考方案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,但 MS Access 不使用它,它使用自己的 SQL 方言(称为“Access SQL”,相比之下相当有限)

【讨论】:

以上是关于带有 CASE 语句的 MS Access 查询的主要内容,如果未能解决你的问题,请参考以下文章

MS Access - 带有组合框和文本框的 If 语句

带有 Like 语句的 MS-Access 上的 SQL 请求似乎永远无法正常工作

MS Access 2010 模块案例声明

在 JAVA 中使用带有 MS Access 2010 数据库的 Update 语句

Ms access Select 带有限制选项的查询

带有子查询的 MS ACCESS 查询