0

SSRS 2008 R2 SP1 では、ユーザーが @Types と @Areas を選択できるレポートを開発しています。これらは両方とも多値パラメーターです。SSRS または SQL SP のいずれかで、すべての @Areas をすべての @Types と連結する必要があります。例えば:

@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 で Join(...) と Split(Join(...)) を試しましたが、そこから行く方法がわかりません。SSRS から SQL に配列を渡すことはできないため、サイコロはありません。コンマ区切りの文字列から SQL の配列に移動する方法がわかりません。私はおかしくなりそうだ。誰にも素晴らしいアイデアはありますか?

4

1 に答える 1

1

カンマ区切りの文字列を個々の行に変換する方法のいくつかを使用して、値のセットごとにテーブルを取得し、これらのテーブルをクロス結合して値を連結できます。

上記のリンクからの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

これらに再度参加する必要がある場合は、こちらの記事複数の例を参照し、最適なものを選択してください。

于 2013-05-30T19:12:52.807 に答える