SQL Server 2008を使用して、標準の多対多リレーションシップを持つピボットテーブルを返すクエリを作成する方法を理解しようとしています。この関係は、どのユーザーがどのロールに属しているかを定義し、サイドに沿ってユーザー名をリストし、上部にロール名を表示するようにします。最終的な目標は、SQL Server Reporting Servicesでこの出力を行うことです.SQLサーバーがピボット結果を生成するかSSRSが結果を生成するかは関係ありません。ここに私のサンプル・スキーマは次のとおりです。SSRSで使用する多対多リレーションシップのSQLピボットテーブル
ユーザー表:
- ユーザーID
- ユーザー名
権利表:
- が をRightID
- RightName
RightsMembership表:
- ユーザーID
- は、私はSSRSのレポートとして、次のような出力をしたい
をRightID。どんな助けもありがとうございます。
RightOne RightTwo RightThree RightFour
jdoe X X
mjane X X
ssmith X X X
はFYI:役割を追加することができますので、私はハードコードにロール名を持っているか、クエリでカウントしたくありません。
私が約3時間で帰宅するまでにこれが返答されなければ、私はそれに答えるでしょう。ちょうどあなたが知っている、私が考えている解決策は、動的SQLとレポートで行列を実行するストアドプロシージャが必要になります。 –
ありがとう、ジェレミー。私はSQLサーバーで "ピボット"コマンドを使用したいものと似た何かを示すサイトを見つけましたが、彼が使用している例は私が探しているもの(1対多の関係)とはまったく一致しません。このhttp://blogs.msdn.com/b/spike/archive/2009/03/03/pivot-tables-in-sql-server-a-simple-sample.aspxの意見はありますか? – bigmac
PIVOTでは、作成するすべての列に明示的に名前を付ける必要があります。そのため、クエリを動的に作成する必要があります。SELECT DISTINCT RightsName FROM権利を使用して、クエリ文字列を作成するために使用できるリストを取得します。次に、sp_executesqlを使用して動的クエリを実行します。 SSRSで列グループを持つマトリックスを使用すると、列の動的カウントが可能になります。私が家に帰ると、私は答えをより詳細にすべて明らかにするでしょう。 :) –