0

首先,我将向您展示示例数据、预期的输入和输出:

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

来自用户的预期输入是 VALUE1 或 VALUE1 列表(在 SSRS 多值中,变量 TEXT)。
预期的输出例如是用户选择的每个 VALUE1 的 QTY 总和,但在此条件下

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 回答