MS Access多表查询添加列报错:Case语句语法问题求助
MS Access SQL语法错误排查与修正
原SQL存在的问题:
- Access表创建语法错误:Access不支持标准SQL的
CREATE TABLE ... AS语法,创建新表必须用SELECT INTO语句。 - CASE表达式写法错误:
- 错误指定了CASE的判断对象
[New1_All_Items](这是表名,不是列名),应该针对你合并后的编号列(比如BP_ID,需替换为实际列名)写条件。 - Access的CASE语法采用
CASE WHEN ... THEN ... END格式,不需要在CASE后指定列(搜索式CASE)。
- 错误指定了CASE的判断对象
- 表名未正确包裹:
New1 All Items包含空格,必须用方括号[New1 All Items]包裹才能被Access识别。 - 编号格式问题:如果编号是文本类型(保留前导零),范围判断时需要给数值加引号;如果是数字类型,前导零会被自动忽略,直接写数字即可。
修正后的SQL
若编号为数字类型:
SELECT *, CASE WHEN BP_ID BETWEEN 100000 AND 1344030 THEN 'Supplier' WHEN BP_ID BETWEEN 1000000307 AND 1006860889 THEN 'Customer' ELSE 'No Link' END AS BP_Type INTO [Updated Items] FROM [New1 All Items]
若编号为文本类型(保留前导零):
SELECT *, CASE WHEN BP_ID BETWEEN '0000100000' AND '0001344030' THEN 'Supplier' WHEN BP_ID BETWEEN '1000000307' AND '1006860889' THEN 'Customer' ELSE 'No Link' END AS BP_Type INTO [Updated Items] FROM [New1 All Items]
注意事项:
- 把
BP_ID替换为你实际合并后的客户/供应商编号列名。 - 确认编号列的数据类型,选择对应版本的SQL执行。
- 确保
New1 All Items查询已存在且能正常访问。
内容的提问来源于stack exchange,提问作者snowshow
相关产品推荐
相关产品推荐

