2016-04-29 5 views
1
SELECT 
'PERSONFULLNAME' = LASTNM --+ ', '+ FIRSTNM +' ' + COALESCE(MIDDLEINITIALNM, '') 
,PERSONNUM 
,EMPLOYMENTSTATUS 
,HOMELABORLEVELNAME5 
,ISWFCTKEMPLICENCE 
,ISWFCSSELICENCE 
,ISWFCMGRLICENCE 
,ISWFCSCHEDULERLIC 
,USERACCOUNTNM 
,USERACCOUNTSTATUS 
,'HCM_Cost_Center_Manager_Name' = n2.NAME 
,TIMEENTRYMETHODNM 
FROM dbo.VP_PERSON p 
LEFT OUTER JOIN PSHCMirror.dbo.PS_JPM_PROFILE jp 
    ON SUBSTRING(jp.JPM_PROFILE_ID,7,6) = SUBSTRING(p.HOMELABORLEVELNAME5,1,6) 
AND jp.JPM_JP_TYPE = 'BU_DEPT' 
LEFT OUTER JOIN PSHCMirror.dbo.PS_JPM_JP_ITEMS jpi 
    ON jpi.JPM_PROFILE_ID = jp.JPM_PROFILE_ID 
AND jpi.JPM_CAT_TYPE = 'HRIS_CNTCT2' 
LEFT OUTER JOIN 
(
SELECT n1.EMPLID, n1.NAME, 'row_nbr' = ROW_NUMBER() OVER (PARTITION BY n1.EMPLID ORDER BY n1.EFFDT DESC, n1.NAME_TYPE DESC) 
FROM PSHCMirror.dbo.PS_NAMES n1 
) n2 
ON n2.EMPLID = jpi.JPM_PERSON_ID_1 
AND n2.row_nbr = 1 

WHERE USERACCOUNTSTATUS = 'Active' 
AND EMPLOYMENTSTATUS = 'Active' 
AND (
@Manager = 'All' OR n2.NAME IN (@Manager) 
) 
order by 1 

名前のリストをパラメータに渡して、デフォルトを 'すべて'に設定しようとするSSRSレポートがあります。条件が期待されるコンテキストで指定された非ブール型の式SSRS

名前の長いリストのため「利用可能な値」が機能しないのと同じクエリを使用するようにパラメータの「デフォルト値」を設定します。

私はエラーが@Manager = 'All' OR n2.NAME IN (@Manager)から来ていることを知っていますが、それを動作させるための代替方法はわかりません。これは私が小さなリストを持っていれば動作します。

+2

'@ Manager'は複数の値を持つパラメータであるため、=の代わりに' IN'を使う必要があります。 'すべて' IN(@Manager)またはn2.NAME IN(@Manager) ' – stubaker

+0

直接あなたのデータセットを呼び出すストアドプロシージャ内にあるのでしょうか? –

+0

@stubakerあなたは答えとして投稿する必要があります – Nathan

答えて

2

@Managermulti-value parameterなので、=の代わりにINを使用する必要があります。

WHERE ('All' IN (@Manager) OR n2.NAME IN (@Manager)) 
+0

あなたは私の一日を作った。ありがとうございました。 – FLICKER

0

クエリにパラメータを渡す場合は、Join関数を使用して値のコレクションを文字列に変換する必要があります。次に、カスタムSplit関数またはLike演算子を使用してWHERE句の値をチェックできます。

もう1つのオプションは、データセットフィルタを追加することです。式の場合はNAME列を選択します。 。「で」値の演算子」として、このような表現を使用使用してください:。これは、それがチェックできるという配列に選択された名前のコレクションを変換

=Split(Join(Parameters!Manager.Value, ","), ",") 

0

私は同じエラーを得ていたが「Execute SQL Task」コンポーネントを含むSSISを使用しています。私の場合、SQLスクリプト文字の約32kを超えたことに気がつかなかったのですが、そのような場合は「Browse」ボタンを使用してSQLコードをロードするか、 。

関連する問題