【发布时间】:2014-05-13 08:43:21
【问题描述】:
SELECT [Sheet1$].ID,
CLng([Sheet1$].RecordID) AS RecordID,
[Sheet1$].col1,
[Sheet1$].col2,
[Sheet1$].col3,
[Sheet1$].col4,
[Sheet1$].col5,
[Sheet2$].Name
FROM [Sheet1$]
INNER JOIN [Sheet2$] ON
[Sheet1$].RecordID = [Sheet2$].RecordID
我在 SSIS Excel 源组件中有上述示例 SQL 命令。从该查询中可以看出,我正在同一个工作簿中的两个 Excel 工作表(Sheet1 和 Sheet2)上进行内部连接。
此时查询执行良好,没有任何错误。
但是,我无法加入第三张表 (Sheet3)。当我尝试在 sheet3 上进行内部连接时,我收到以下错误消息。
一个 OLE DB 记录可用。来源:“Microsoft Access 数据库引擎”Hresult:0x80040E14 描述:“查询表达式 '[Sheet1$].RecordID = [Sheet2$].ReportID 中的语法错误(缺少运算符) 内连接 [Sheet3$] 开启 [Sheet1$].RecordID = [Sheet3$].RecordID'
所以我基本上无法在两个或多个 Excel 表上进行内部连接。我只能在一张 Excel 表上进行内部连接。我使用的语法在 SQL Server 中有效,所以我想知道 如果它也应该在 SSIS Excel 源 SQL 命令中工作,因为它似乎正在使用 Microsoft Access 数据库引擎。
下面是产生上述错误的第二个连接查询:
SELECT [Sheet1$].ID,
CLng([Shee1$].RecordID) AS RecordID,
[Sheet1$].col1,
[Sheet1$].col2,
[Sheet1$].col3,
[Sheet1$].col4,
[Sheet1$].col5,
[Sheet2$].Name
FROM [Sheet1$]
INNER JOIN [Sheet2$] ON
[Sheet1$].RecordID = [Sheet2$].RecordID
INNER JOIN [Sheet3$] ON
[Sheet1$].RecordID = [Sheet3$].RecordID
【问题讨论】:
-
CLng([Shee1$].RecordID)-> 不应该是CLng([Sheet1$].RecordID)还是在这里发帖时打错字? -
@shree.pat18,哦,这是一个错字,已更正。
-
您能用 [Sheet3$] 尝试您的第一个查询吗?有用吗?
-
@PeterRing,是的,如果我删除 sheet2$ 并用 Sheet3$ 替换它,它会起作用。因此,只要我有一个内部连接,它就可以工作。只有在尝试添加第二个内部连接时才会失败。
标签: sql sql-server excel ssis