2012-05-03 7 views
1

グループ化するフィールドだけでなく、2番目のレベルのグループ化も選択できるレポートを作成しようとしています。説明するために、照会されているレコードは、人々のタイムシートのエントリです。したがって、各レコードには、スタッフ(時間を働かせたスタッフ)、会社(時間が働いた会社)、プロジェクト(作業したプロジェクト)、活動(作業の種類)、および時間働いた。より多くのフィールドがありますが、この例では十分です。SSRSでのダブルグループ化+エクスポート

のは、いくつかのレコードがあるとしましょう:

ジョン・スミス、ABC社、プロジェクトX、活動X、10
ジョン・スミス、ABC社、プロジェクトX、活動Y、5
ジョン・スミス、ABC社、プロジェクトY、活動X、8
ジョン・スミス、会社FGH、プロジェクトY、活動Y、6
ジェーン・ジョーンズ、ABC社、プロジェクトX、活動X、4
ジェーン・ジョーンズ、ABC社、プロジェクトY、活動Y 、8
Jane Jones、Company FGH、プロジェクトY、アクティビティX、7その上 ジェーン・ジョーンズ、会社FGH、プロジェクトX、Y活動、6

と...

レポートユーザーがスタッフによって、及び二次プロジェクトによってグループに選択することができ、そして、彼らが取得したいですこの:

 
John Smith 
          Project X    15 
          Project Y    14 

Jane Jones 
          Project X    10 
          Project Y    14 

それとも、彼らは活動によって、その後のプロジェクトで選択するか、または何でも彼らが好きフィールドの組み合わせができます。私は別のテーブルの中にテーブルを入れ子にし、両方にグループ化することでこれを行いました。それは美しく機能します。

EXCEPT ... Excelにエクスポートしません。私たちは2005年にあり、私が見ることができても、2008年にはまだ動作しません。それ以降は分かりません。それにもかかわらず、私がこのレポートを公開する必要があるときにアップグレードする方法はありません。

どのようにこれを達成できますか?私はクエリでグループ化の最初のレベルを行ういくつかの方法を考え出していますが、動的SQLを使用しても、それが必要なので、パラメータによって渡されたどのフィールドでも動作させる方法を考え出すことができません第1レベルのグループ分けのために他のフィールドを返すことができるようにする。

サブレポートは理論的には機能しますが、この全体がサブレポートであり、レイヤリングできるかどうかはわかりません。プラス私はオーバーヘッドがひどいと思う...

ありがとう!

答えて

0

あなたはこれを達成するために、ネストされたテーブルを使用する必要はありません。 2つのグループと2つのパラメータ「Group By 1」と「Group By 2」を持つ単一のテーブルが必要です。パラメータの値は、データセットの列の名前です。

1つのパラメータ

value   label 
------  ------- 
staff   Staff Member 
project_name Project 

ことで当社グループは、この後に最初のグループのグループ式を設定します。

=Fields(Parameters!GroupBy1.Value).Value 

と2番目のグループのグループ式:

=Fields(Parameters!GroupBy2.Value).Value 
+0

これは、データが事前にグループ化されていないことを前提としています。つまり、レポートデータセットは質問のレコードのように見えます。 – Nathan

+0

ネストしたテーブルを使用せずに2つのグループをどのように配置しますか?それが私にそれを働かせることができる唯一の方法だった... – teleute00

+0

うそつき - 心配しないでください。ソートされました。それは基本的に私が最初にやろうとしていたものですが、それを正しく行うことはできませんでした。私はそれがうまくいくかも知らなかったので、私は諦めました。今私はそれが正しい方向であることを知っているので、SSRSについてもう少し詳しく知ったので、必要に応じて動作させました。ありがとう! – teleute00

0

は、動的SQLクエリ内のすべてのグループ分けをして試してみてください - のようなもの:

="select " + 
Parameters!ReportParameter1.Value + " firstCol, " + 
Parameters!ReportParameter2.Value + " secondCol, " + 
"sum(hours_worked) total_hours from timesheets " + 
"group by " + 
Parameters!ReportParameter1.Value + ", " + 
Parameters!ReportParameter2.Value 
+0

うーん...私は、テーブル自体とは対照的に、クエリ内のグループ化のアイデアをテストするために、ちょうど2つのグループ化値(プロジェクトとアクティビティ)を設定してみました。それは動作していますが、私はまだそれを動的に行うことをテストする必要があります。私は、私が知らない/まだ理解していないことを推測する - クエリ内のグループ化は自動的にそれがどのように表示されるか、テーブル内でフォーマットされるか?それはそうですが、私はそれが何をしているかを確かめたいだけです。ありがとう! – teleute00

+0

私はこの動的にするための構文を理解することはできません。 'DECLARE(at)TmpQuery varchar(800) set(at)TmpQuery = 'SELECTのタイムシート.Minutes (これは注射には適していませんが、私は知っています。)1.私は、 SSRSと2のsp_executesqlを見つけません。これはネット上にないマシンのみです) しかし、そのフィールドの値の代わりにgroup_byの自分のフィールドの名前を返します。 – teleute00

+0

それよりもフォーマットする方法を理解できません。ごめんなさい!とにかく、(at)Group_byの代わりにParameter!Group_by.valueで試してみました。 – teleute00

関連する問題