0

SSRS、マトリックス コントロール、動的行の生成について質問があります。

現在、週ごとに分類された値のリストを提供するデータセットがあります。

 Week | Value1| Value2 | Value3
 W1   | 1     | 2      | 3
 W2   | 4     | 5      | 6 

マトリックス コントロールを使用して、レポートの週ごとの内訳に表示するのはどれですか? ここでは、行見出しは静的ですが、列見出しはデータセットから動的に追加されます。

         | W1    | W2
 Value1  | 1     | 4
 Value2  | 2     | 5
 Value3  | 3     | 6

この部分は問題ありませんが、最終レポートをいくつかの変数で分割する必要があるため、別のディメンションを追加する必要があります。新しいデータセットは次のようになります

 Week | VariableA | VariableB | Value1| Value2 | Value3
 W1   | ResultA   | Result1   | 1     | 1      | 1 
 W1   | ResultB   | Result1   | 0     | 1      | 1 
 W1   | ResultA   | Result2   | 0     | 0      | 1 
 W2   | ResultA   | Result1   | 1     | 2      | 5 
 W2   | ResultA   | Result2   | 3     | 3      | 1 

そして、次のようなレポートを生成する必要があります。

                | W1    | W2
 Value1 ResultA | 1     | 4
 Value1 ResultB | 0     | 0
 Value1 Result1 | 1     | 1
 Value1 Result2 | 0     | 3

動的列も生成している間に、この方法で動的行を生成することは可能ですか? 変数の値がどうなるかわかりません。

事前に感謝し、さらに情報が必要な場合はコメントを残してください.

4

1 に答える 1

1

UNPIVOT および PIVOT 関数を適用することにより、SQL を使用して結果を取得できます。UNPIVOT は 2 回適用されます。1 回目は の複数の列を行value1value2変換し、2 回目の実装ではvariablea/variableb列を行に変換します。

基本的な構文は次のとおりです。

select week, 
  col + ' ' + varcol1, value
from table1
unpivot
(
  value
  for col in (value1, value2, value3)
) u
unpivot
(
  var
  for c in (variablea, variableb)
) u1;

SQL Fiddle with Demoを参照してください。これにより、次のような結果が得られます。

| WEEK |           COL1 | VALUE |
---------------------------------
|   W1 | Value1 ResultA |     1 |
|   W1 | Value1 Result1 |     1 |
|   W1 | Value2 ResultA |     1 |
|   W1 | Value2 Result1 |     1 |
|   W1 | Value3 ResultA |     1 |
|   W1 | Value3 Result1 |     1 |
|   W1 | Value1 ResultB |     0 |

次に、 PIVOT 関数を適用してW1とのW2値を列に変換できます。

select col1, W1, W2
from
(
  select week, 
    col + ' ' + var col1, value
  from table1
  unpivot
  (
    value
    for col in (value1, value2, value3)
  ) u
  unpivot
  (
    var
    for c in (variablea, variableb)
  ) u1
) d
pivot
(
  sum(value)
  for week in (W1, W2)
) p;

SQL Fiddle with Demoを参照してください。これにより、データが結果に変換されます。

|           COL1 | W1 |     W2 |
--------------------------------
| Value1 Result1 |  1 |      1 |
| Value1 Result2 |  0 |      3 |
| Value1 ResultA |  1 |      4 |
| Value1 ResultB |  0 | (null) |
| Value2 Result1 |  2 |      2 |
| Value2 Result2 |  0 |      3 |
| Value2 ResultA |  1 |      5 |
| Value2 ResultB |  1 | (null) |
| Value3 Result1 |  2 |      5 |
| Value3 Result2 |  1 |      1 |
| Value3 ResultA |  2 |      6 |
| Value3 ResultB |  1 | (null) |

これは、ストアド プロシージャに配置する必要がある動的 SQL に変換できます。

于 2013-06-05T15:11:19.213 に答える