2017-08-29 13 views
0

は、私は下のリンクでの画像のような3つのテーブルにはしている:ピボット行のSQL Serverの列に2014

https://drive.google.com/file/d/0B0P-s1mtoHkaY2hJUEJuTnZOYTQ/view

私は1つ以上のように、結果を表示することができますか?

私はGoogleで調査し、それがSQLでピボットを使用することによって得ていることを知ります。しかし、私はそれを得ることはできません。 助けに感謝します。

ありがとうございます。

+0

そうだね、あなたはピボットクエリを必要とします。まだ何か試しましたか? –

+0

Stack Overflow imgur以外の場所に画像を投稿しないでください(あなたの投稿を書くときに画像ツールバーボタンを使用して到達可能)。あなたのコンテンツに他の場所を使用することは、将来の読者が利用できることが確実でないことを意味し、大部分のコンテンツがそこに含まれているので、利用できない場合、あなたの投稿は価値がなく、 See [ask]。 –

答えて

2

あなたはジャンクションテーブルを介して一緒にユーザーとロールのテーブルを結合して、別の列としてそれぞれの役割を取得するために、ピボット試すことができます。

SELECT 
    u.Id AS UserID, 
    u.UserName, 
    MAX(CASE WHEN r.Name = 'Admin' THEN 'TRUE' ELSE 'FALSE' END) AS Admin, 
    MAX(CASE WHEN r.Name = 'Manager' THEN 'TRUE' ELSE 'FALSE' END) AS Manager, 
    MAX(CASE WHEN r.Name = 'Employer' THEN 'TRUE' ELSE 'FALSE' END) AS Employer 
FROM Users u 
LEFT JOIN UserRole ur 
    ON u.Id = ur.UserID 
LEFT JOIN Role r 
    ON ur.RoleID = r.Id 
GROUP BY 
    u.ID, 
    u.UserName 
ORDER BY 
    u.Id 

出力:

enter image description here

ここからデモ:

Rextester

+0

助けてくれてありがとう。それは私には役に立ちます。しかし、そうであれば、新しい役割を追加すると動的に表示することはできません。あなたはそれを改善できますか? –

+0

@NvPeterデータセットに新しい役割の新しい列を追加する方法について質問している場合は、自動的にそれを行うには動的SQLが必要です。 –

関連する問題