2015-08-26 49 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

相關問題