Sql 带有CASE语句的MS-Access查询
我只想得到一个表“b”的值,如果表“a”的值是“-” 如果表“b”中的值为空,则获取表“a”的值,即使它是“-” Microsoft Access对此查询显示“缺少操作员”:Sql 带有CASE语句的MS-Access查询,sql,ms-access,select,case,Sql,Ms Access,Select,Case,我只想得到一个表“b”的值,如果表“a”的值是“-” 如果表“b”中的值为空,则获取表“a”的值,即使它是“-” Microsoft Access对此查询显示“缺少操作员”: SELECT ts.data_generacio, ts.estat, ts.exercici, Month(tsl.data) AS Mes, Day(tsl.data) AS Dia, tsl.data,
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
IIF(tsl.activitat“”、tsl.activitat、ts.activitat)作为activitat
我不确定Access是否支持LEFT JOIN
上的别名,但它可能支持
注意(尽管标记正确),问题的标题可能会很麻烦。。。大多数人在编写“MS SQL”时都会提到Transact-SQL(TSQL)。Transact-SQL由MS SQL Server使用,但不是由MS Access使用,后者使用自己的SQL方言(称为“Access SQL”,比较起来非常有限)这是一个大小写表达式,而不是语句…每次删除一行,以查找错误何时消失。没有帮助…所以您找不到错误行?!?错误行位于大小写表达式行。