2017-11-09 12 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 
関連する問題