当前位置: 首页 > 面试题库 >

使用CASE语句的MS Access查询

伯晨
2023-03-14
问题内容

我只想获取一个表“ 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表达式行上。


问题答案:

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。



 类似资料:
  • Erlang提供case语句,可用于根据case语句的输出执行表达式。 本声明的一般形式是 - 语法 (Syntax) case expression of value1 -> statement#1; value2 -> statement#2; valueN -> statement#N end. 本声明的一般工作如下 - 要评估的表达式放在case语句中。 这通常会评估为

  • 问题内容: 我上周一直在学习SQL,但是我不确定如何在检查约束中正确添加case语句。有人可以给我指点吗? 我有以下成绩表: 我想检查是否在AD之间,则必须为“ S1”,或者是否在EG之间,则为“ S2”。 我试图对此进行研究并提出后者,但是它不起作用..我是否正确构造了代码? 问题答案: 我认为您可以执行以下操作: 请在此处查看SQL Fiddle模式。 您不需要约束,因为正则表达式检查就足够了

  • 除非编译器强制要求,括号在 case 语句里面是不必要的。但是当一个 case 包含了多行语句的时候,需要加上括号。 switch (condition) { case 1: // ... break; case 2: { // ... // Multi-line example using braces

  • 我在mysql查询中使用CASE语句,我必须检查同一查询中是否存在列。 有可能这样做吗?如果是,请帮忙。 我的查询为例- 当“Status”时选择CASE column1,然后选择“Status”当“value”时(当id不为NULL时选择CASE id,然后选择“status1”,否则选择“status2”结束为table1 where condition中的ScheduleStatus)结束为

  • 主要内容:语法,示例Erlang 提供 case 语句,它可以用于执行基于 case 语句的输出表达式。这个语句的一般形式是 - 语法 这条语句一般工作如下 - 待计算的表达式被放置在 case 语句中。这通常将计算为一个值在随后的语句中使用。 每个值都通过 case 表达式评估匹配排除其它。根据它的值是 true 时,case 中后续的语句将被执行。 下图显示了 case 语句的流程。 下面的程序是在 Erlang

  • 问题内容: 我有一个存储过程。我在这里传递一个布尔值,例如IS_ELIGIBLE。现在,我希望能够编写如下查询: 问题是由于IS_ELIGIBLE不是TABLE_NAME中的列之一,查询出错了。我可以使用if..else即写相同的查询。 但是我将重复两次select语句。我知道我可以创建具有该select语句的函数,这样我就不必重复两次。但是我只是很好奇是否可以在不执行if..else或创建新函数