2015-08-26 47 views
0

我正在查找返回输出的SSIS component,其中该输出显示来自表1的分组中的每个第二个值。 'Table1'是以前组件的结果。我专门在数据源组件以外的组件中搜索答案。我知道有一种方法可以通过SQL语句来完成。作为前一个问题的结果,我找到了解决办法:请参阅here获取SSIS中每个第二行作为结果表

为了澄清我的问题,我制作了一个打印屏幕(下图)。在红线中,我想要一些组件,如下所述进行分组。

enter image description here

例如,我有如下数据(表1),并希望所期望的结果列表:

Table1: 
Customer Quantity 
A   5 
A   8    (*) 
B   3 
B   5    (*) 
B   11 
C   7 
D   4 
D   23    (*) 

期望的结果列表:

Customer Quantity 
A   8 
B   5 
D   23 

我想这样做'select distinct and left outer join'的东西,但我不能得到它的工作。可能我需要一个行编号,但不知道如何去做。任何人都可以帮助我?

下面的是我用来制作和填写表1脚本:

CREATE TABLE Table1 
(Customer nvarchar(1) NULL, 
Quantity int NOT NULL); 

INSERT INTO Table1(Customer,Quantity) 
VALUES 
('A',5), 
('A',8), 
('B',3), 
('B',5), 
('B',11), 
('C',7), 
('D',4), 
('D',23); 
+0

这是一个带有sql语句的OLEDB源代码,它可以获取每隔一行,不是吗?我错过了什么吗? –

+0

@ tab-alleman:是的,你错过了一些东西。请参阅打印屏幕,也是[这里](http://prntscr.com/8905hg)。我正在寻找通过OLEDB源找不到的解决方案。我想知道是否有一种方法来配置一个组件,这里是在获得像Table1这样的临时表的分组后,将Table1转换为所需的结果列表。撤销我的queston与减1。你有一个答案的建议? – cybork

回答

1

我会通过导入所有行到一个临时表中,然后运行使各个的第二行的存储过程解决了这个分组到最终的目的地表中。

或者,如果需要更多的SSIS转换,请使用staging表作为源来启动第二个数据流,并使用SQL查询获取每个组的第二行。

您已经引用了一个回答问题,该问题显示了如何通过TSQL获取每个组的第二行,以便该部分不应该成为问题。

我知道如何在一个数据流中完成所有操作的唯一方法是使用自定义脚本转换,这将需要大量代码编写,并且不会像staging table解决方案那样执行,可以使用基于集合的处理而不是逐行。

+0

谢谢。我将深入探讨这个问题,看看这个存储过程和自定义脚本转换的建议是如何工作的(我是新手)。可能有其他人有另一个建议。 PS:我查了一下基于set和procedural的是什么,并根据set的过程由dbms完成,并且你自己必须告诉dbms它是如何处理的,并且代码的处理是逐行完成。可能这会让位给一个新的话题,但你能否证实我的理解? – cybork

+0

是的,这听起来像你有基于集合与程序之间差异的本质。 –

+0

谢谢。很高兴知道我明白了。 – cybork

相关问题