0

最初に、データの例、予想される入力と出力を示します。

VALUE1 | QTY
-------------
111-01 | 5
111-02 | 3
111-03 | 2
112-01 | 4

ユーザーからの予期される入力は、VALUE1 または VALUE1 のリスト (SSRS の複数値、変数 TEXT) です。
期待される出力は、たとえば、ユーザーが選択した各 VALUE1 の QTY の SUM ですが、この条件では

like SUBSTRING(VALUE1,1,3)+'%'

この場合、ユーザー選択 111-01 の出力は

VALUE1 | QTY
-------------
111    | 10

これまでのところ、IN ステートメントの LIKE 演算子のようです。SSRSからパラメーターを分割し、(疑似コード)としてループを実行する解決策のみを見つけました

foreach @parameter in @parameter.Split
where VALUE1 like '@parameter[0]'+'%' or ...

もっとエレガントな解決策があると思います。とにかく、このソリューションは本当に遅いです。私はSSRSの経験があまりないので、データセットが作成された後のいくつかのグループ化が解決策になるかもしれません.

4

1 に答える 1

1

おそらくあなたは試してみたいかもしれません:

  1. 疑似コード:

    WITH    condition
          AS ( SELECT   SUBSTRING(c.SplitValue, 1, 3) Criteria
               FROM     dbo.fncSplit('111-1,112-2,113-3,114-4,115-1,116-1', ',') c
             )
    SELECT  SUM(t.QTY)
    FROM dbo.tblTest t
    INNER JOIN condition con ON con.Criteria = SUBSTRING(t.Value1, 1, 3)
    
  2. テーブルで全文索引を実行すると、パフォーマンスが向上する可能性があります

于 2013-07-25T07:07:31.587 に答える