1

ODBC で MySQL にリンクされた SSRS を使用しています。私のクエリは、顧客ごとの支払い金額を合計し、金額の降順で並べ替えます。これを使用して、SSRS で LeaderBoard を作成し、ランクを表示し、上位 10 人の顧客のみを含めたいと考えています。

オプション 1: SQL でグループ クエリに対して追加のクエリを実行し、行番号を追加します。

オプション 2: SSRS に計算フィールドを追加します。

オプション 1 はかさばるように見えたので、オプション 2 から始めました。次のように定義された「ランク」と呼ばれるデータセットに計算フィールドを追加しました。=RowNumber("DataSet1")

=RowNumber("DataSet1") として定義された "Rank" というデータセットに計算フィールドを追加しました。

しかし、次のエラーが発生しました。

計算フィールド「Rank」に使用される式には、集計、RowNumber、RunningValue、Previous、またはルックアップ関数が含まれています。Aggregate、RowNumber、RunningValue、Previous、およびルックアップ関数は、計算フィールド式では使用できません。

そこで、それを実際の Tablix に追加すると、Rank が正しく表示されるようになりました。(これを行うと、データセットに余分な列が自動的に追加されました。

次に、上位 10 人の顧客をフィルター処理したいと考えました。

この新しいフィールドで最初に「ボトム 10」で試しましたが、うまくいきませんでした。(実際のデータセットでは、このフィールドはすべてゼロのようです。)

その後、支払い金額の「トップ 10」で試してみましたが、フィルターが整数のみをサポートしているというエラーが表示されました。

そのため、CAST と Convert を使用して、MySQL で支払い金額を整数に変換しようとしましたが、整数への変換をサポートしておらず、SSRS は「SIGNED」やその他のオプションが好きではありませんでした。

次に、クエリを MySQL に組み込むオプション 1 を試してみました。追加した:

SET @rank=0; 
SELECT @rank:=@rank+1 AS Rank, ...

これは MySQL では機能しますが、そのクエリを SSRS のレポート定義に貼り付けるとエラーが発生します。

何か案は?

4

1 に答える 1

1

別のステートメントで @rank=0 を設定するのではなく、メイン クエリにクロス結合されたサブクエリで設定してみてください。

SELECT @rank:=@rank+1 AS Rank, ...
FROM (SELECT @rank:= 0) r
CROSS JOIN ...
于 2013-07-02T15:21:45.610 に答える