2

実行中の合計を実行する必要があるシナリオがあります。純粋な T-SQL またはスクリプト タスクでこれを達成できます。しかし、ハンド コーディングは避け、ETL ツールの機能を使用したいと考えています。それは可能ですか?

私はテーブルバランスを持っています

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]

私はこのように合計を実行しています。

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 でこれを行いたい

4

2 に答える 2

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 に向けますか?

于 2012-05-29T13:39:23.897 に答える
1

いいえ。何かを手作業でコーディングしないわけではありません。私が見つけた実行中の合計の最適なオプションは、SQLServerCentralの Jeff Moden によるこの記事です。

于 2012-05-29T19:47:20.013 に答える