在期望条件的上下文中指定的非布尔类型的表达式SSRS

use*_*925 2 sql-server reporting-services

 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
Run Code Online (Sandbox Code Playgroud)

我有一个SSRS报告,试图将名称列表传递给参数,并且默认设置为'all'。

设置参数的“默认值”以使用与“可用值”相同的查询,因为名称列表过多。(如果我的清单很小,这将起作用,它将自动选中“全选”)

我知道错误来自@Manager = 'All' OR n2.NAME IN (@Manager),但我不知道任何其他方法可以使它起作用。

stu*_*ker 5

由于@Manager是一个多值参数,因此您需要IN在条件中使用而不是=。尝试将WHERE子句的该部分更新为:

WHERE ('All' IN (@Manager) OR n2.NAME IN (@Manager))
Run Code Online (Sandbox Code Playgroud)