2017-11-09 24 views
0
SELECT  PatchPhase.PhaseName, MAX(PatchPhase.Sequence) AS seq, 
PatchState.Application, PatchState.Objectname, PatchState.Jobname, 
PatchState.Streamname, COUNT(*) AS Total, 
PatchState.Jobdescription, 
PatchState.Status, PatchState.Timestamp  
FROM PatchState 
INNER JOIN PatchPhase ON PatchState.Phase = PatchPhase.PhaseTech 
WHERE  (PatchPhase.PhaseName IN (@Phase)) 
AND (PatchState.Application IN (@Application)) AND (PatchState.Timestamp >= @StartDate) 
AND (PatchState.Timestamp <= @EndDate) 
GROUP BY PatchPhase.PhaseName, PatchState.Application, PatchState.Objectname, 
PatchState.Jobname, PatchState.Streamname, PatchState.Jobdescription, PatchState.Status, 
PatchState.Timestamp 
ORDER BY PatchState.Application 

행렬에서 작업 중이며 3 열 (계획, 실행 중, 완료 됨)이 포함 된 상태의 열 그룹이 있습니다. 나는 계획 한 + 합계를 나누고 총계로 나누고 싶다.SSRS가 행렬의 열 그룹에서 원하는 열의 %를 계산합니다.

총 열이 열 그룹 밖에 있습니다.

calculate total %

내가 어떤 대답을 찾을 수 있습니까하지만 난 누군가가 도움을 주시기 바랍니다 수 있습니다 내 코드 에서 사용하는 방법을하지 않았다?

+0

데이터 세트의 소스 코드에 액세스 할 수 있습니까? 코드에서이 작업을 훨씬 쉽게 수행 할 수 있습니다. – Schmocken

+0

예 코드에 액세스하여 변경할 수 있습니다. 그러나 어떻게 할 수 있습니까? –

+0

최종 SELECT 문을 추가하고 DBMS를 확인하면 도움을받을 수 있습니다 – Schmocken

답변

0

당신은 당신이 가치를하려는 텍스트 상자의 텍스트 상자에 이름을주고있다 위의 표현에

표현 =Reportitems!Textbox133.Value 대신 textbox133에서 텍스트 상자에 표시되는 값을 얻을 수 있습니다. 귀하의 경우 총계 열

0

이 값을 집계 한 다음 행렬 대신 테이블을 사용하십시오. 이제는 열 그룹이 필요하지 않습니다. 내가 SQL을 실행할 수 없기 때문에 나는 완벽하다고 약속 할 수는 없지만 그렇지 않다면 아마 그걸 가지고 놀 수있다. 그것은 아무것도 제공하지 않으면 지침을 제공해야합니다.

SELECT  
PatchPhase.PhaseName, 
MAX(PatchPhase.Sequence) AS seq, 
PatchState.Application, 
PatchState.Objectname, 
PatchState.Jobname, 
PatchState.Streamname, 
PatchState.Jobdescription, 
SUM(case when PatchState.Status = 'Planned' then 1 else 0 end) as 'Planned', 
SUM(case when PatchState.Status = 'Running' then 1 else 0 end) as 'Running', 
SUM(case when PatchState.Status = 'Completed' then 1 else 0 end) as 'Completed', 
(SUM(case when PatchState.Status = 'Planned' then 1 else 0 end) + SUM(case when PatchState.Status = 'Running' then 1 else 0 end))/
    (SUM(case when PatchState.Status = 'Planned' then 1 else 0 end) + SUM(case when PatchState.Status = 'Running' then 1 else 0 end) + SUM(case when PatchState.Status = 'Completed' then 1 else 0 end)) as totalPercentage 
PatchState.Timestamp 

FROM 
    PatchState 
    INNER JOIN PatchPhase 
    ON PatchState.Phase = PatchPhase.PhaseTech 

WHERE   
(PatchPhase.PhaseName IN (@Phase)) 
AND (PatchState.Application IN (@Application)) 
AND (PatchState.Timestamp >= @StartDate) 
AND (PatchState.Timestamp <= @EndDate) 

GROUP BY 
    PatchPhase.PhaseName, 
    PatchState.Application, 
    PatchState.Objectname, 
    PatchState.Jobname, 
    PatchState.Streamname, 
    PatchState.Jobdescription, 
    PatchState.Status, 
    PatchState.Timestamp 

ORDER BY 
    PatchState.Application