2016-10-21 18 views
0

SSRSレポートサービスを使用しているときにクライアントからリクエストを受け取りました。私はSSRSの一種です。誰かが私の下の問題を助けてくれることを願っています。SSRS 2012動的列番号

一般的な例を使用して問題を示します。 SSRSのDATASET2で

StuId   StuSubject 
-------------------------------- 
1    "Math" 
1    "Geography" 
2    "Science" 
3    "Math" 
3    "History" 
3    "Music" 

を以下のようにSSRSのDATASET1で

は、データは、データがSSRS DataSet3においてこれ

StuId   StuName  
------------------------ 
    1   "Tom" 
    2   "Joseph" 
    3   "Linda" 

ようなもので、それは

ようになります
StuId    StuInt 
-------------------------- 
1    "Swim" 
2    "Chess" 
2    "Swim" 
2    "Running" 
3    "Game" 

私がSSRSレポートで望むものは、このようなものになります

StuId StuName StuSubject StuSubject StuSubject StuInt StuInt StuInt


1 "トム" "数学" "地理" NULL "泳ぐ" NULL NULL

2 "ジョセフ" "科学" NULL NULL "チェス" 「スイム」「実行」

3「リンダ」「数学」「歴史」「音楽」「ゲーム」NULL NULL

はトリッキーな部分は、私がStuSubjectの最大数が何であるかを知らないということですこれらすべての学生、より正確には、実際のケースでは100個の列が存在する可能性があるため、「StuSubject」列の制限を設定したくありません。私はLookupSet関数を考えましたが、LookupSetを使用しているようですが、1つのセルで複数のStuSubjects値を "、"で結合できるだけです。

何かアドバイス/提案は非常に事前

編集に感謝し、感謝されるだろう:私は一つの「参加」の状況のた​​めにマトリックスコントロールを使用することができますが、これは1フィナーレ一つに複数のデータセットを「参加」することは可能でしょうか?

+0

SSRS関数を使用して結合する目的は何ですか?この種の問題を解決するつもりはないツールで問題を解決しようとしています。私はこれが不可能だとは言っていませんが(確かに分かりませんが)、適切なツールを使ってこの問題を解決するのがより良い方法であることを指摘したいだけです。 – grafgenerator

答えて

0

解決策は、マトリックスのレポート項目を使用することです。行と列によるデータのグループ化を実行できます。 DBから返されたデータは、あなたが持っている2つのデータセットの集合体でなければなりません。フォーマットの行(StuId、StuName、StuSubject)に設定する必要があります。 その後、StuId(およびStuNameによる子行のグループ化によって行のグループ化を追加できますが、これは必須ではありません)、StuSubjectによる列のグループ化を追加できます。詳細セルは単にStuSubjectを出力します。

enter image description here

検索*機能では、レポートの処理中にデータを結合行うことができものの、SSRSでレポートを処理している間に、それらが実行されているので、私の経験式は、ほとんどの場合、本当に悪い持っているから、確かにあまり効率的で(あることに注意してくださいレポートのパフォーマンスへの影響)。また、結合ウィークル処理レポートを作成することは、SSRSエンジンを使用する最良の方法ではなく、簡単なグループ化が必要なときやグループ化が必要ないときに効果的な、レポートを作成する標準的な方法ではありません。最良のアプローチは、レポートのコンテキストと常識を考慮して、可能な限り表示したいものに近いところにSQL結果を生成することです。

0

は、以下の手順に従ってください。LINKからのアプローチを提案して

はあなたのマトリックスであなたのDataSet1を使用してください。

あなたのクエリは以下のようになります。

Select StuId,StuSubject 
'StuSubject' + Cast(row_number() over (partition by id order by score) as INT) StuSubjectVal 
from table 

あなたは(マトリックスを使用した後に)以下のような結果を取得する必要があります。

StuId  StuSubject1  StuSubject2  StuSubject3...... 

列を行列に追加し、DataSet1からDataSet2までのルックアップを使用します。

=Lookup(Fields!StuId.Value, Fields!StuId.Value, Fields!StuName.Value, "DataSet2") 

テストしていませんが、動作するはずです。

+0

StuSubjectデータセットのみを使用する場合に動作します.StuIdキーに基づいて結合するデータセットがもう1つあれば、どうすればよいでしょうか。 – Lee

+0

私の答えの下の部分で述べたように、複数のデータセットを結合するためにルックアップを使用します。 – p2k