我们说我在SSIS中有两个数据源。
表A有10行,其中两列是空的。 表B有20行,每行有两列。
我想以某种方式以某种方式将它们加入到ETL过程中: 对于表A的每一行,使用表B中两列的值生成20行。
这样,应该使用表A和B
中每行的每种可能组合生成200行我尝试使用合并加入和联盟作品,但他们不会工作......有任何想法如何解决这个问题?
答案 0 :(得分:2)
SELECT table1.column1, table2.column2...
FROM table1, table2
笛卡尔联接是MS-SQL世界中的交叉联接。
使用不带where子句的交叉连接
SSIS中逐步加入的一步一步: http://toddmcdermid.blogspot.be/2010/09/performing-cross-join-cartesian-product.html
有关交叉连接的一些SQL Server文档: https://technet.microsoft.com/en-us/library/ms190690%28v=sql.105%29.aspx
答案 1 :(得分:1)
为两个源添加相同的列并为其分配相同的值,例如1.因此,table1中的所有10行和table2中的20行对于该列都具有值“1”。当您现在执行merge join
,将联接类型保持为full outer join
, Voila!时,您拥有cross join
。请记住,需要在SSIS
的列上对源进行排序,以便继续使用Merge join
,否则会引发错误。