Excel多表LEFT JOIN多连接条件SQL查询失败排查求助
Excel多字段LEFT JOIN SQL查询故障排查
核心错误点
1. VBA字符串拼接语法断裂
你的第二段代码中,连接Backlog$表的行末尾缺少下划线_:
"LEFT OUTER JOIN [Backlog$] AS b " &
VBA中跨多行拼接字符串必须用& _,缺少_会导致这行与下一行的SQL片段无法合并,生成残缺的SQL语句,这是直接导致查询失败的首要原因。
2. 表别名与字段的对应关系完全错误
你在SELECT和GROUP BY里把字段和表别名搞反了:
- 别名
b对应Backlog$表,该表只有Backlog字段,没有CountThisweek - 别名
c对应ThisWeek$表,该表只有ThisWeek字段,没有CountBacklog
如果是需要统计计数,应该用聚合函数(比如COUNT(b.[Backlog]) AS CountBacklog),但当前直接引用不存在的字段名,会触发"字段不存在"的错误。
3. 冗余的GROUP BY(可选)
如果没有使用任何聚合函数,GROUP BY是多余的——ClientUnique本身是唯一表,分组操作反而可能导致结果不符合预期。
修正后的完整代码
SQLQuery1 = "SELECT" & _ "a.[Client] " & _ ",a.[name1] " & _ ",a.[Deliveryadress] " & _ ",b.[Backlog] " & _ ",c.[ThisWeek] " & _ "FROM " & _ "([ClientUnique$] AS a LEFT OUTER JOIN [Thisweek$] AS c" & _ "ON a.[Deliveryadress] = c.[Deliveryadress] AND " & _ "a.[Client] = c.[Client] AND " & _ "a.[name1] = c.[name1]) " & _ "LEFT OUTER JOIN [Backlog$] AS b " & _ ' 补全下划线_ "ON a.[Deliveryadress] = b.[Deliveryadress] AND " & _ "a.[Client] = b.[Client] AND " & _ "a.[name1] = b.[name1]" & _ ' 若无需聚合,可删除以下GROUP BY块 "GROUP BY " &_ "a.[Client] " &_ ",a.[name1] " &_ ",a.[Deliveryadress] " &_ ",b.[Backlog] " &_ ",c.[ThisWeek]"
内容的提问来源于stack exchange,提问作者gkruk
相关产品推荐
相关产品推荐

