web-dev-qa-db-ja.com

SSRS 2005のグループのRowNumber

SSRSレポートに、テーブルの詳細ではなくグループのみを表示するテーブルがあります。カラーバンディングを使用できるように、表示されているアイテムの行番号を確認したい。 「Rowcount(Nothing)」を使用してみましたが、代わりに詳細テーブルの行番号を取得しました。

私の基礎となるデータは次のようなものです

ROwId   Team      Fan

1       Yankees   John
2       Yankees   Russ
3       Red Socks Mark
4       Red Socks Mary
...         
8       Orioles   Elliot
...         
29      Dodgers   Jim
...
43      Giants    Harry 

グループのみを表示する私のテーブルは次のようになります。

ROwId   Team
2       Yankees
3       Red Socks   
8       Orioles
29      Dodgers 
43      Giants  

見た目が欲しい

ROwId   Team
1       Yankees
2       Red Socks   
3       Orioles
4       Dodgers 
5       Giants  
11
FistOfFury

RunningValue 式を使用してこれを行うことができます。

=RunningValue(Fields!Team.Value, CountDistinct, "DataSet1")

DataSet1は、基礎となるデータセットの名前です。

データを検討してください:

enter image description here

簡単なレポートを作成し、RowNumberRunningValueのアプローチを比較すると、RunningValueが必要な結果をもたらすことがわかります。

enter image description here

30
Ian Preston

これは少しのvbcodeで簡単に実現できます。 [レポート]-[プロパティ]-コードに移動し、次のように入力します。

_Dim rownumber = 0
Function writeRow()
  rownumber = rownumber + 1
  return rownumber
End Function
_

次に、セルで=Code.writeRow()を使用してこの関数を呼び出します

テーブル内でグループの使用を開始するとすぐに、RowNumber関数とRunningGroup関数が奇妙な動作を開始するため、必要なことを実行するためのコードを記述するだけの方が簡単です。

8
Joao Leal

上記の提案がすべての解決策の1つであるとは確信していません。私のシナリオは、複数の列を持つグループ化があることです。関数で使用する単一の列がないため、合意されたソリューションRunningValueを使用できませんでした。

同じ理由でVBAコード関数をそのまま使用することはできませんでした。そのため、複数の列と複数のプロパティで同じ値を使用する必要がありました。列* Mプロパティ)その後、NxM呼び出しごとにRowNumberを更新することしかできませんでしたが、列カウント関数を確認できなかったため、列を追加した場合は、N定数も増やす必要があります。また、新しい列を追加したくありませんでした。グループ化にも推奨されているため、非表示にする方法がわからず、値を更新するだけで何も返さない関数Aを呼び出すことができるvbaシステムを作成できませんでした(つまり、グループ行ごとに1回だけ)その後、行番号変数を返す別の関数GetRowNumberを呼び出します。これは、呼び出しの前に色付けが行われたため、常に1つの列が残りの列と同期していないためです。

私が考えることができる他の2つのソリューションは、クエリ自体に前述の結合された列を配置するか、DENSE_RANKを使用してすべてのグループ列でソートすることです。

DENSE_RANK() OVER (ORDER BY GroupCol1, GroupCol2, ...) AS RowNumber
0
Glen