複数の Web サイトの数千行のログ統計 (ページごと、Web サイトごとのビュー数) を含む単一のテーブルがあります。たとえば、次の表では、複数のサイトが同じページ名に対して個別の統計情報を持つことができます。
+----+---------+-------+------------+
| id | page | views | sitename |
+----+---------+-------+------------+
| 1 | page1 | 7 | name1 |
+----+---------+-------+------------+
| 2 | page1 | 5 | name2 |
+----+---------+-------+------------+
| 3 | page2 | 3 | name2 |
+----+---------+-------+------------+
| 4 | page1 | 7 | name3 |
+----+---------+-------+------------+
| 5 | page2 | 5 | name3 |
+----+---------+-------+------------+
| 6 | page3 | 3 | name3 |
+----+---------+-------+------------+
DISTINCT サイト名ごとに各 DISTINCT ページ名をリストし、サイトごとにそのページのビュー数を表示できるクエリを作成しようとしています。
+-------+----------+-------+---------+
| page | name1 | name2 | name3|
+-------+----------+-------+---------+
| page1 | 7 | 5 | 7 |
+-------+----------+-------+---------+
| page2 | NULL | 3 | 5 |
+-------+----------+-------+---------+
| page3 | NULL | NULL | 3 |
+-------+----------+-------+---------+
サイトにその特定のページの統計がない場合、ビューの値は NULL にする必要があります。これにより、どこかで JOIN/UNION を実行する必要があると思いますが、それについて頭を悩ませることはできません! 複数の異なる値が必要な場合、このクエリを作成するにはどうすればよいですか? ありがとう!
UPDATE (ANSWER WITH DYNAMIC SQL + PIVOT): PIVOT は正しい方法であり、両方の潜在的な回答が含まれていました。実際の SELECT ステートメントの値の合計は、動的 SQL クエリを適切に機能させるための鍵であったため、2 番目のレスポンダーに公式のクレジットを与えました。
http://sqlfiddle.com/#!6/7b4cb/37/0
また、ここからTSQLを使用しました: