存储过程加入

时间:2014-06-30 13:34:50

标签: sql sql-server stored-procedures sql-server-2008-r2 integration

我刚刚在我的存储过程中添加了一个临时表,我正在尝试将此表连接到此存储过程中的其他字段。此更改会影响我的程序包的运行方式。所以程序运行正常但我的包给了我一个错误'删除外部列'示例

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包中映射它。

1 个答案:

答案 0 :(得分:0)

如果你的临时表有一行

,这是怎么做的
declare @whatever varchar(10);
set @whatever = 'Foo'

select @whatever, A.* from table_A as A

如果您的临时表有多行,那么您正在使用笛卡尔积(它将表A中的每一行与表B中的所有行相匹配。这是一件非常糟糕的事情!

Select * from table_A, table_B  (make no comparison statement)

如果你这样做,它会杀死你的系统。作为一个例子,我用两个小表(439和193行)做了这个,我的结果集超过47,000条记录!这是坏事,坏事,坏事。

我是否提到这是一件可怕的事情?