2012-03-06 7 views
1

SQLデータベースから複数の列の値を1行にまとめたレポートを作成するように求められました。例1行のデータから複数のレポート行を作成

Employee Name | Type1Column1 | Type1Column2 | Type2Column1 | Type2Column2 
John Doe  | 0.00   | 10.00  | 20.00  | 20.00 

Report Output 

Name   | Type  | Total 
John Doe  | Type1  | 10.00 
       | Type2  | 40.00 

のために私は

...あなたのアイデアを取得していない私は、テーブルを設計していないdid'ntと私はそれを変更することはできませんが、私は出力を生成するストアドプロシージャを微調整することができるかもしれない何を願って

私はいくつかのアイデアで遊んだが、私は迷っている。私はグループ化する何らかの計算を必要としているように感じていますが、私はいつもデータウェアハウスとキューブを設計してきたのでこれまでにはこれまでに反対してきません。

SSRS 2008R2でこれをどのように達成することができたのでしょうか?

ありがとうございます。

+0

各タイプの列は常に固定数であり、事前に知られているタイプですか? I.あなたの例では、データセットは常に 'Type1Column1'、' Type1Column2'、 'Type2Column1'と' Type2Column2'を持っていますか?その場合は、これらをグループ化する必要はありません。レポートに別の詳細行を追加して、レポートのフィールドを合計することができます。 –

+0

データ列には常に同じ数(5 x 7)のデータ列があり、事前にそれらがあることがわかります。私はまだあなたが意味することをかなり得られないのですか? John Doe Columnを各詳細行(タイプごとに1つずつ)に繰り返して、データがない行を隠すことを意味しますか?つまりそのタイプのゼロ合計ですか?興味深いアイデア; –

答えて

3

出力結果を返すクエリにUNPIVOT演算子を適用できますか?

select 
EmployeeName, 
case 
    when Type like 'Type1%' 
    then 'Type1' 
    else 'Type2' 
end TypeCol, 
Total 
from (select EmployeeName, Type1Column1, Type1Column2, Type2Column1, Type2Column2 
    from storedprocdata) as f 
unpivot (Total for Type in (Type1Column1, Type1Column2, Type2Column1, Type2Column2) 
) as u 

派生テーブルfは、storedprocdataというテーブルからデータを取得していることに注意してください。また、メインのSELECTステートメントのcaseステートメントでは、必要なさまざまなタイプで明示的に持つ列をグループ化できます。

次に、SSRSレポートの[合計]列で合計を集計することができます。

+0

私はUnPivotのステートメントについて聞いたことがありますが、それを使ったことはありません。実際のところ、データセットは私の例よりもはるかに複雑ですが、私はそれを動作させることができるかどうかを確認することができます - ありがとうございます。 –

1

unpivot演算子は柔軟性があるはずですが(問題に関するJamie Fのコメントを展開する)、5行の詳細行(各タイプに1つずつ)を設定し、合計列の式を設定することでこれを行うことができます後続のタイプ詳細行のそれぞれについて同様の表現で、タイプ1の詳細行のために -

=Fields!Type1Column1.Value+ Fields!Type1Column2.Value+ Fields!Type1Column3.Value+ 
Fields!Type1Column4.Value+ Fields!Type1Column5.Value+ Fields!Type1Column6.Value+ 
Fields!Type1Column7.Value 

:のようにすることができます。

+0

音が聞こえませんが、上記のようにレポートを作成するにはどうすればいいですか? 5つの詳細行を追加すると、ヘッダー、すなわちJohn Doeと詳細行の間に小さな「ステップ」があります。私は、それぞれの細部の行に名前を繰り返して、合計が0になる行を隠すことができると思います。申し訳ありません - 私は思っています。 –

+0

@JohnKattenhorn:従業員名にグループヘッダー行を含めないでください。代わりに、5つの詳細行の最初に従業員名を入力します(列名が空の他の4つの詳細行セルは空のままにします)。 –

関連する問題