1

ドリルダウングループを使用した SSRS 2008 表形式レポートがあります。グループ化は AssignedAnalystId です。データベースとサーバーでは、AssignedAnalystId のみが利用可能です。AssignedAnalystId と実際の名前 (完全なユーザー名) の間のマッピングを持つテーブルを持つ別のサーバーに別のデータベースがあります。

私がやりたいことは、スカラー関数であるかのようにその場で AssignedAnalystId を他のデータセットに渡し、AssignedAnalystId の代わりにグループに表示する完全なユーザー名を取得できるようにすることです。これを行う方法はありますか?

4

1 に答える 1

0

理想的には、最初のクエリでテーブルを結合する必要がありますが、レポートに 2 つの別個のデータセットを用意し、Lookup 関数を使用して必要なことを行うこともできます。Lookup 関数は 4 つのパラメーターを取ります。あなたの場合、次のように入力します: 1 番目のデータセットの ID フィールド、2 番目のデータセットの ID フィールド、2 番目のデータセットのユーザー名フィールド、データセットの名前。詳細については、MSDN の記事を参照してください: http://msdn.microsoft.com/en-us/library/ee210531.aspx

データをフィルタリングする良い方法は、Split 関数を使用することです。SSRS パラメーターをコンマ区切り値または複数値に設定すると、以下のテーブル値関数を使用して、クエリで使用する一時テーブルに変換できます。

CREATE FUNCTION Split (@origString varchar(max))     
returns @temptable TABLE (items varchar(max))     
as     
begin     
    declare @idx int     
    declare @split varchar(max)     
    set @idx = 1     
    if datalength(@origString )<1 or @origString is null
        return     

    while @idx <> 0     
    begin     
        set @idx = charindex(',', @origString)     
        if @idx <> 0     
            set @split = left(@origString, @idx - 1)     
        else     
            set @split = @origString

        if(datalength(@split) > 0)
            insert into @temptable(Items) values(ltrim(rtrim(@split)))

        set @origString = right(@origString, datalength(@origString) - @idx)     
        if datalength(@origString) = 0
            break     
    end 
return     
end

次に、クエリに次のようなものを含めて、フィルターとして機能させることができます。

SELECT *
FROM Table1 as T1
INNER JOIN Split(@SSRScsvParameter) as T2 on T1.ID = T2.ID
于 2013-05-16T20:23:28.033 に答える