【问题标题】:MS Access Query with CASE statement带有 CASE 语句的 MS Access 查询
【发布时间】: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表达式行。

标签: sql ms-access select 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”,相比之下相当有限)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多