2013-09-03 3 views
1

저는 SAP 시스템에서 매주 내보내기를받는 HR 프로젝트를 진행하고 있습니다. 특정 계정의 총계정 원장에 입력 된 주간 합계를 제공합니다. 연도 별 SUM 합계

Company Code G/L Fiscal Year Local Currency Amount in LC 
0020   4544000 2012   USD   575.00 
0020   4544000 2012   USD   252.70 
0020   4544000 2012   USD   89.75 
0020   4544000 2012   USD   44.00 
NULL   NULL 2012 Total  NULL  86,422.58 
0020   4544000 2013   USD   2,000.00 
0020   4544000 2013   USD  -2,000.00 
0020   4544000 2013   USD   35.00 
0020   4544000 2013   USD   35.00 
NULL   NULL 2013 Total  NULL  110,979.23 
NULL   0004544000 Total  NULL  197,401.81 
Grand Total  NULL NULL   NULL  197,401.81 

이 단순히 일 올해의 합계을 위해 내가해야 할 것은

(나는 공간을 절약하기 위해 여러 행을 제거).

Fiscal Year  Amount in LC 
2012    86,422.58 
2013    110,979.23 

그리고 2016 년까지 계속 진행해야합니다.

가져올 파일이 SAP 시스템에서 내 보낸 .xlsx입니다. 첫번째 커플이 사용할 수 없으므로 컨설턴트에게 수출을 수정해야했습니다.

현재 데이터를 가져오고 스테이징 테이블로 내보내기 전에 집계를 통해 실행하는 SSIS 패키지가 있습니다. 그러나 이미 합계 된 합계가 준비 테이블에서 중복을 일으키고 있습니다. 파생 된 열을 실행하여 데이터를 제거하는 방법이 있다면 도움이 될 것입니다.

집계 데이터는 다음과 같습니다.

Fiscal Year  Amount in LC 
NULL   394803.62   <- Needs to be removed 
2012   86422.58   <- Correct 
2013   110979.23   <- Correct 
2012 Total  86422.58   <- Duplication, Needs to be removed 
2013 Total  110979.23   <- Duplication, Needs to be removed 

제공 할 수있는 도움에 감사드립니다.

+1

데이터 흐름에서 집계 전에 조건 분할을 추가하고 회사 코드 또는 GL이 빈 문자열 및/또는 NULL 일 때 해당 행을 집계에 보내지 않습니까? – billinkc

답변

1

SSIS에서 집계를 실행 중이므로 sql 작업이 실행되고 있다고 가정합니다.

당신은 기록을 제외하는 SQL 작업의 WHERE 기준을 편집해야합니다 :

WHERE [Fiscal Year] IS NOT NULL 
    AND [Fiscal Year] NOT LIKE '%Total%' 

을하여 SQL 작업을 사용하지 않는 경우, 당신은 집계와의 OLE DB 대상 사이의 조건부 분할을 추가 할 수 있습니다.

+1

SQl 작업을 실행하지 않았습니다. Excel 소스가 집계로 이동하여 DB 대상으로 이동했습니다. –

+0

목적지 바로 전의 조건부 분할은 어떻습니까? –

1

SSIS에서 집계를 제거하고 테이블로 내 보냅니다. 나는 당신이 묘사 한 테이블이 "SAP 시스템 매주 내보내기"테이블처럼 보일 것이라고 가정합니다.

그런 다음 테이블에서 결과를 얻을 수있는 저장 프로 시저를 작성 :

Select LEFT([Fiscal Year],4) AS [Fiscal year] , [Amount in LC] 
/* NOT NULL will exclude NULLs in [Fiscal Year] */ 
From <your table> 
Where ([Fiscal Year] IS NOT NULL) AND [Fiscal Year] LIKE '%Total' 
/* Group by eliminates duplicates */ 
Group By [Fiscal Year], [Amount in LC] 

집계 테이블에 이미, 당신은 단지 그것을 따기 있습니다.

+0

내가 만든 표에 맞게 열 이름을 편집했는데 다음 오류가 발생합니다. 메시지 207, 수준 16, 상태 1, 줄 3 'FiscalYear'열 이름이 잘못되었습니다. msg 207, 수준 16, 상태 1, 줄 3 'FiscalYear'열 이름이 잘못되었습니다. 메시지 수준, 16, 상태 1, 줄 4 'FiscalYear'열 이름이 잘못되었습니다. msg 207, 수준 16, 상태 1, 줄 1 'FiscalYear'열 이름이 잘못되었습니다. –

+0

SSIS 패키지가 오류없이 실행 되었습니까?SSMS에서 볼 수있는 테이블 구조와 데이터는 "SAP 시스템에서 매주 내보내기"에서받은 테이블 구조와 데이터와 동일합니까? 새 테이블에서'[Fiscal Year]'란 이름을 지었습니까? 아니면 'FiscalYear'라고 이름을 지었습니까? '[Amount in LC] 란이 받아 들여지고 있습니까? 공백없이 테이블의 회계 연도 열의 이름을 프로 시저의 회계 연도 열과 일치 시키려고 했습니까? 'Group By '또는'Where' 절을 주석 처리하고 실행하면 같은 오류가 발생합니까? 열의 이름이 테이블에 잘못 지정되었습니다. –

+0

SSIS 패키지가 withoug 오류를 실행했으며 테이블의 데이터가 Excel 내보내기의 데이터와 정확하게 일치합니다. 공백없이 [FiscalYear]와 [AmountinLC]라는 테이블 이름을 만들었지 만이를 보완하기 위해 스크립트를 변경했습니다. 어느 쪽도 받아 들여지지 않았습니다. 나는 Group by에 의해 주석을 달았고 Where 절뿐만 아니라 같은 오류가 발생했습니다. 테이블을 삭제하고 SSIS 패키지와 함께 다시 작성합니다. 이번에는 모든 것을 똑같이 만들고 더 잘 작동하는지 살펴 보겠습니다. 나는 또한 컨설턴트에게 다시 수출을 보냈고 그에게 uneeded 행을 제거하려고 노력했다. –