2012-05-29 25 views
2

我有一個場景,我必須運行總計,我可以通過純T-SQL或腳本任務來實現此目的。但是我想避免手工編碼,並使用ETL工具功能。這是可能的和如何。無需任何手動編碼,可以在SSIS中實現總計運行嗎?

我有表餘額

SELECT '00000001' AS [AccountNo], CONVERT(date,'20080828') AS [Date],10 AS [DailyMovement] 
INTO balances 
UNION ALL 
SELECT '00000001' AS [AccountNo], CONVERT(date,'20080829') AS [Date],5 AS [DailyMovement] 
UNION ALL 
SELECT '00000001' AS [AccountNo], CONVERT(date,'20080830') AS [Date],7 AS [DailyMovement] 
UNION ALL 
SELECT '00000002' AS [AccountNo], CONVERT(date,'20080828') AS [Date],8 AS [DailyMovement] 
UNION ALL 
SELECT '00000002' AS [AccountNo], CONVERT(date,'20080829') AS [Date],6 AS [DailyMovement] 

我得到ruuning總這樣。

SELECT b1.[AccountNo] 
,  b1.[Date] 
,  b1.[DailyMovement] 
,  SUM(b2.[DailyMovement]) AS [RunningTotal] 
FROM balances b1 
INNER JOIN balances b2 ON b1.[AccountNo] = b2.[AccountNo] 
          AND b1.[Date] >= b2.[Date] 
GROUP BY b1.[AccountNo],b1.[Date],b1.[DailyMovement]; 

想這樣做在SSIS無需專人編碼

+0

的這篇文章,你通過跑步總數能理解什麼?你能給個例子嗎? – Diego

+0

@Diego編輯的問題來解釋我的情況。 – Pritesh

+0

沒問題,但你想在哪裏插入這些信息?你只需要總計還是你需要從餘額表中的東西? – Diego

回答

3

你嘗試添加查詢

SELECT b1.[AccountNo] 
,  b1.[Date] 
,  b1.[DailyMovement] 
,  SUM(b2.[DailyMovement]) AS [RunningTotal] 
FROM balances b1 
INNER JOIN balances b2 ON b1.[AccountNo] = b2.[AccountNo] 
          AND b1.[Date] >= b2.[Date] 
GROUP BY b1.[AccountNo],b1.[Date],b1.[DailyMovement]; 

到oledbsource使用它作爲源,然後直接將其指向一個oledbdestination?

+0

這將是手工編碼.... – Pritesh

+1

有時候最好的答案是使用工具集最適合問題的部分...或者-sql或腳本任務可以很好地工作,而內置組件不需要。使用工具箱中的適當工具。 –

1

沒有。不是沒有手工編碼的東西。我發現的最佳跑步總數選項是Jeff Moden在SQLServerCentral

相關問題