2013-05-30 77 views
0

在SSRS 2008 R2 SP1中,我正在開發一個報告,用戶可以選擇@Types和@Areas。這兩個都是多值參數。我需要在SSRS或SQL SP中將每個@Areas與每個@Types連接起來。例如:SSRS/SQL - 連接兩個逗號分隔字符串

@Types: DP,DPC,PC 
@Areas: M1,M2,M3 

Result: 'DP_M1,DPC_M1,PC_M1,DP_M2,DPC_M2,PC_M2,DP_M3,DPC_M3,PC_M3' 

我不能爲我的生活弄清楚如何做到這一點。我試過在SSRS中加入(...)和拆分(加入(...)),但無法弄清楚如何從那裏開始。我無法將數組從SSRS傳遞到SQL,因此沒有骰子。我無法弄清楚如何從逗號分隔的字符串到SQL中的數組。我要瘋了。任何人有任何精彩的想法?

回答

1

您可以使用這裏的一些方法Turning a Comma Separated string into individual rows來獲取每組值的表,然後將這些表交叉連接在一起並連接值。

我扔在一起,這個例子從上面的鏈接建模關閉CTE答案:

declare @Types as varchar(max) 
declare @Areas as varchar(max) 

set @Types = 'DP,DPC,PC' 
set @Areas = 'M1,M2,M3' 

;with tmp(DataItem, Data) as (
select LEFT(@Types, CHARINDEX(',',@Types+',')-1), 
    STUFF(@Types, 1, CHARINDEX(',',@Types+','), '') 
union all 
select LEFT(Data, CHARINDEX(',',Data+',')-1), 
    STUFF(Data, 1, CHARINDEX(',',Data+','), '') 
from tmp 
where Data > '' 
) 

select 
    DataItem 
into #Types 
from tmp 

;with tmp2(DataItem, Data) as (
select LEFT(@Areas, CHARINDEX(',',@Areas+',')-1), 
    STUFF(@Areas, 1, CHARINDEX(',',@Areas+','), '') 
union all 
select LEFT(Data, CHARINDEX(',',Data+',')-1), 
    STUFF(Data, 1, CHARINDEX(',',Data+','), '') 
from tmp2 
where Data > '' 
) 

select 
    DataItem 
into #Areas 
from tmp2 

select 
_Types.DataItem + '_' + _Areas.DataItem 
from #Types _Types 
cross join #Areas _Areas 

drop table #Types 
drop table #Areas 

如果您需要重新加入這些你能看到這篇文章here多個實例,並挑選最適合你的一個。

+0

謝謝,我會給它一個鏡頭!現在像一位母親一樣多任務處理,所以可能會有一段時間。 – Jimfletcha