【发布时间】:2023-03-09 03:55:01
【问题描述】:
我刚刚在我的存储过程中添加了一个临时表,我正在尝试将此表连接到此存储过程中的其他字段。此更改会影响我的包的运行方式。所以程序运行正常,但我的包给了我一个错误'删除外部列'示例
If object_id() is null
Begin
Create table #...
Insert into table #...
(
Value int
Name varchar
)
Select value from # where .....
End
这运行正常,但我认为我的问题来自以下连接
Select ab.value, * from
(
Select top 100
...
...
...
...
Case when this then this
Else null
End as usage
From ...
Left join ...
On
Left join..
On
Left join
On
)cd
Left join #.. ab on
ab. = cd.
结果将我原来的存储过程(即括号中的 cd 表)连接到创建的临时表并带回空字段。这不是我想要的。右连接也不起作用。我可以将此添加为案例陈述吗?
我只希望临时表中的“值”字段作为结果中的一个字段。我希望能够在我的 ssis 包中映射它。
【问题讨论】:
-
如果你的外连接返回表 ab 的所有空值,那么它没有找到匹配的记录。你确定你匹配的那一列在 AB 和 CD 中是一样的吗?
-
它们不一样。除了其他字段之外,我只想从临时表中返回字段“值”。
-
那么我假设临时表只有一行?然后,您可能想查看常规变量而不是临时表。您需要删除连接的连接部分,然后它将为 CD 中的每个返回 AB 中的行。但是,笛卡尔积查询是非常糟糕的做法,它们会占用处理时间。
-
请您进一步解释一下...?要删除左连接并创建常规变量而不是临时表?
标签: sql sql-server stored-procedures sql-server-2008-r2 integration