0

세일즈맨과 클라이언트를 보여주고 지난 해의 판매량, 올해의 판매액, 올해의 계류중인 판매액, 올해의 잃어버린 판매액 및 다음에 열을 표시하는 판매 보고서를 작성했습니다. 끝은 "재생 중"입니다. 재생 중 수식은 지난 해의 판매 - SUM (올해의 판매, 올해의 보류 중, 올해 손실)이어야합니다. 수식의 결과가 0보다 작 으면 0으로 표시합니다.보고서 작성 도구 3.0에서 앞의 행에 대한 합계

클라이언트 수준에서 다음과 같이 작동하도록 할 수 있습니다. = Iif (SUM (Fields! InPlay.Value) < 0, 0, SUM (Fields! InPlay.Value)). 계산 된 필드를 만들어 InPlay를 다음과 같이 만들었습니다 : = Fields! LastSeasonRevenue.Value-Fields! CurrentSeasonContractedRevenue.Value-Fields! CurrentSeasonPendingRevenue.Value-Fields! CurrentSeasonLostBusiness.Value.

세일즈맨이나 총계에 대한 전체 행에 넣으려고 할 때 내 투쟁이 온다. 내 데이터는 각 계약서에 대해 여러 행을 가지도록 구성되어 있으므로 계산 된 필드는 분명히 한 줄씩 계산됩니다. 이것은 "In Play"열의 클라이언트 레벨에 대해 모든 것을 합한 것이지만 합계에서는 작동하지 않습니다. 내가 가지고있는 Iif 공식 때문에 그 부분이 나온다. 그러나 나는 그것을 할 수있는 더 좋은 방법을 알 수 없다.

세일즈맨 및 총계에 의해 결과를 잘못 입력했거나 결과가 #error 인 여러 가지 방법을 시도했습니다.

이미지를 추가하려고했지만 stackoverflow가 허용하지 않습니다.

편집 : 이것은 내 문제의 텍스트 표현이며 내 목록의 영업 사원 중 하나입니다.

 LastYearRev, ThisYearRev, Pending, Lost, InPlay 

클라이언트 1 0, 0, 4972, 0, 0 Client3 4800, 0, 0, 0, 4800

Client4

클라이언트 2 0, 16800, 0, 0, 0

6375, 0, 0, 0, 6375

Client5 26754, 0, 0, 0, 26,754

CLI ent6 0, 1200, 0, 0, 0

Client7 5300, 0, 0, 0, 5300

는 43,229, 18,000, 4972, 0의 InPlay 열에

43,229 총 행 합계 I 보고서에 43,229를 표시하고 싶지만 그 행에 대해 수식이 작동하는 방식은 합계가 20,257 일 것입니다. CREATE TABLE #SampleData ([Salesman] Varchar(255), Season varchar(255), Company varchar(255), Client varchar(255), ContractNo int, LastSeasonRevenue Decimal, CurrentSeasonNewContractedRevenue Decimal, CurrentSeasonContractedRevenue Decimal, CurrentSeasonPendingRevenue Decimal, CurrentSeasonLostBusiness Decimal, BusinessClosedLastWeek Decimal) ; INSERT INTO #SampleData (Salesman,Season,Company,Client,ContractNO,LastSeasonRevenue,CurrentSeasonNewContractedRevenue,CurrentSeasonContractedRevenue,CurrentSeasonPendingRevenue,CurrentSeasonLostBusiness,BusinessClosedLastWeek) Values('Salesman1','2014-2015','Company5','Client6',1157,0,1200,1200,0,0,0), ('Salesman1','2014-2015','Company1','Client1',1267,0,0,0,4972,0,0), ('Salesman1','2013-2014','Company4','Client7',298,1600,0,0,0,0,0), ('Salesman1','2013-2014','Company4','Client7',298,3400,0,0,0,0,0), ('Salesman1','2013-2014','Company4','Client7',298,300,0,0,0,0,0), ('Salesman1','2013-2014','Company2','Client5',442,4653.75,0,0,0,0,0), ('Salesman1','2013-2014','Company9','Client3',491,4800,0,0,0,0,0), ('Salesman1','2013-2014','Company1','Client4',519,2975,0,0,0,0,0), ('Salesman1','2013-2014','Company1','Client4',519,680,0,0,0,0,0), ('Salesman1','2013-2014','Company1','Client5',674,22100,0,0,0,0,0), ('Salesman1','2013-2014','Company1','Client4',676,2720,0,0,0,0,0), ('Salesman1','2014-2015','Company1','Client2',868,0,16800,16800,0,0,0)

+0

게시물의 텍스트 표현과 결과를 포함하도록 게시물을 편집 할 수 있습니까? 나는 그 질문을 이해하고 있지만 내가하고 있는지 확인하고 싶습니다. 또한 데이터 세트 및 샘플 데이터를 제공 할 수 있다면 이점이 있습니다. 처음에는 보고서 디자이너보다 데이터 집합의 SQL (또는 MDX)에서 더 잘 해결 된 문제인 것처럼 들립니다. – Michael

+0

@Micheal 데이터를 작성하는 코드와 보고서의 텍스트 버전을 제공했습니다. – Jared

답변

0

제라드, 내가 실제로 SQL 데이터 세트 자체에서이 문제를 처리하고 "InPlay"라는 계산 된 열 추가합니다 :

SELECT Client 
, LastSeasonRevenue 
, CurrentSeasonContractedRevenue 
, CurrentSeasonPendingRevenue 
, CurrentSeasonLostBusiness 
, CASE WHEN LastSeasonRevenue - CurrentSeasonContractedRevenue 
- CurrentSeasonPendingRevenue 
- CurrentSeasonLostBusiness <0 THEN 0 ELSE 
LastSeasonRevenue - CurrentSeasonContractedRevenue 
- CurrentSeasonPendingRevenue 
- CurrentSeasonLostBusiness 
END InPlay 
FROM #SampleData 

이것은 당신에게 내가 함께 일하고 있어요 데이터를 제공해야

이 논리는 ReportBuilder에서 수행 할 수 있지만이 계산을 다시 수행하여 보고서의 다른 부분에서 참조 될 수 있도록하는 것이 가장 좋습니다 (또한 SQL이 SSRS 수식 구문보다 낫다고 생각합니다).당신이 SSRS에서 할 (또는 공유 데이터 집합을 사용하여 같은 몇 가지 이유에있다)하고 싶었다면

, 공식은 다음과 같습니다 응용 프로그램의

=Sum(iif(Fields!LastSeasonRevenue.Value - Fields!CurrentSeasonContractedRevenue.Value - Fields!CurrentSeasonPendingRevenue.Value - Fields!CurrentSeasonLostBusiness.Value< 0 , 0, CDBL(Fields!LastSeasonRevenue.Value) - CDBL(Fields!CurrentSeasonContractedRevenue.Value) - CDBL(Fields!CurrentSeasonPendingRevenue.Value) - CDBL(Fields!CurrentSeasonLostBusiness.Value))) 

스크린 샷 : enter image description here

중요한에게 원래 방정식에서 누락 된 요소는 IIF() 문 내부에 SUM()이 있다는 것입니다. SSRS에서 SUM()은 컬렉션을 가져 와서 해당 컬렉션의 각 항목을 개별적으로 평가합니다. 따라서이 예에서는 SUM() 문을 IIF() 문에 전달하는 대신 SUM()에 IIF() 계열 문을 전달합니다.

+0

답장을 보내 주셔서 감사하지만 SSRS 솔루션이 작동하지 않습니다. 내 원래 게시물에 명시된 바와 같이 일단 총 행에 도착하면 나열된 수식이 작동하지 않습니다. 그러나 SQL 경로에 시도해 볼 것이지만 공유 데이터 세트로 작업하고 있으며 데이터가 제 간단한 대답보다 훨씬 복잡하므로 같은 방식으로 작동하는지 확신 할 수 없습니다. – Jared

+0

Jared, 제 방법에 대한 스크린 샷을 첨부했습니다. SUM() 함수가 귀하의 명세서에 IIF() 함수를 포함하고 있는지 확인하십시오. SUM()은 항목 컬렉션에서 작동하며 컬렉션의 각 항목에 대한 IIF() 문을 평가합니다. – Michael