【发布时间】:2017-07-03 09:35:24
【问题描述】:
在我的项目中,我有一个使用内连接的合并连接转换。它应该将文件查找与数据流的其余部分结合起来。但是,连接似乎不包括某些行和文件,即使它应该?我正在尝试模拟 tsql 中的连接,但我似乎做错了,因为它显示了丢失的行。
这是我尝试加入的输出 输入 A:
SELECT *
FROM
tblExpense expense
OUTER APPLY(
SELECT TOP 1 *
FROM tblExpenseDtl Details
WHERE expense.intExpenseID = Details.intExpenseID
ORDER BY Details.sintLineNo
) details
WHERE
expense.dtUpdateDateTime > '2017-06-01'
ORDER BY expense.intExpenseID desc
输入 B:
SELECT f.*
FROM dbo.tblExpense e
JOIN tblExpenseDtl d ON d.intExpenseID = e.intExpenseID
JOIN tblExpReceiptFile f ON f.intExpenseDtlID = d.intExpenseDtlID
WHERE
e.dtUpdateDateTime > '2017-06-01'
ORDER BY e.intExpenseID desc
而且我认为会产生与我的 SSIS 内连接相同的结果的 sql 查询
SELECT *
FROM
tblExpense expense
OUTER APPLY(
SELECT TOP 1 *
FROM tblExpenseDtl Details
WHERE expense.intExpenseID = Details.intExpenseID
ORDER BY Details.sintLineNo
) details
inner join ( SELECT f.*
FROM dbo.tblExpense e
JOIN tblExpenseDtl d ON d.intExpenseID = e.intExpenseID
JOIN tblExpReceiptFile f ON f.intExpenseDtlID = d.intExpenseDtlID
WHERE
e.dtUpdateDateTime > '2017-06-01'
ORDER BY e.intExpenseID desc
) innerJ
WHERE
expense.dtUpdateDateTime > '2017-06-01'
ORDER BY expense.intExpenseID desc
SSIS 中的加入键是expense.intExpenseID = e.intExpenseID。
输入 A 给出 1 行,费用 ID=X,输入 B 给出 2 行,费用 ID=X
【问题讨论】:
-
当您可以使用 SQL 命令在 OLE DB 源中执行所有操作时,为什么还要使用合并连接?
标签: sql-server ssis