You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access中两个派生表LEFT JOIN语法错误问题求助

MS Access LEFT JOIN派生表语法错误解决方案

正确查询语句

SELECT 
    年月列表.年月,
    Nz(加班统计.调休加班总时长, 0) AS 调休加班总时长,
    Nz(加班统计.支票支付加班总时长, 0) AS 支票支付加班总时长
FROM 
    (
        SELECT '2023-01' AS 年月
        UNION ALL SELECT '2023-02'
        UNION ALL SELECT '2023-03'
        UNION ALL SELECT '2023-04'
        UNION ALL SELECT '2023-05'
        UNION ALL SELECT '2023-06'
        UNION ALL SELECT '2023-07'
        UNION ALL SELECT '2023-08'
        UNION ALL SELECT '2023-09'
        UNION ALL SELECT '2023-10'
        UNION ALL SELECT '2023-11'
        UNION ALL SELECT '2023-12'
    ) AS 年月列表
LEFT JOIN 
    (
        SELECT 
            FORMAT(加班日期, 'yyyy-mm') AS 年月,
            SUM(IIF(加班类型='调休' AND 审批状态='已审批', 加班时长, 0)) AS 调休加班总时长,
            SUM(IIF(加班类型='支票支付', 加班时长, 0)) AS 支票支付加班总时长
        FROM 加班表
        WHERE 员工ID = '000510205' AND YEAR(加班日期) = 2023
        GROUP BY FORMAT(加班日期, 'yyyy-mm')
    ) AS 加班统计
ON 年月列表.年月 = 加班统计.年月
ORDER BY 年月列表.年月;

关键语法说明

  • 必须给派生表加别名:Access要求所有子查询生成的派生表必须指定别名(如AS 年月列表、AS 加班统计),这是导致你出现FROM子句错误的核心原因之一
  • 括号嵌套规范:每个派生表需要单独用括号包裹,LEFT JOIN的结构要严格符合Access的SQL语法要求
  • 处理空值:用Nz()函数将无加班记录月份的NULL值替换为0,保证结果表数据完整性
  • 适配实际表结构:请将语句中的加班表、加班日期、加班类型等字段/表名替换为你数据库中的实际名称

内容的提问来源于stack exchange,提问作者Abhishek Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:00:06