2013-07-25 116 views
0

首先,我會告訴你示例數據,預期輸入和輸出:SQL - SSRS搜索值列表使用LIKE

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

(在SSRS預計從用戶輸入VALUE1或VALUE1的列表中選擇多個值,變量文本)。
預期輸出是用於由用戶選擇的每個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沒有多少經驗,因此創建數據集之後可能會有一些分組可以成爲解決方案。

回答

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. 嘗試做在桌子上和性能全文索引可能會提高