【问题标题】:An expression of non-boolean type specified in a context where a condition is expected SSRS在预期条件的上下文中指定的非布尔类型的表达式 SSRS
【发布时间】:2017-09-26 20:32:34
【问题描述】:
 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 报告,它试图将名称列表传递给参数并默认设置为“全部”。

将参数的“默认值”设置为使用与“可用值”相同的查询将不起作用,因为名称列表很长。 (如果我有一个小列表,这将起作用,它会自动选中“全选”)

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

【问题讨论】:

  • 由于@Manager 是一个多值参数,您需要使用IN 而不是=。试试'All' IN (@Manager) OR n2.NAME IN (@Manager)
  • 此查询是直接在您的数据集中,还是在您为数据集调用的存储过程中?
  • @stubaker 您应该将其发布为答案

标签: sql-server reporting-services


【解决方案1】:

由于@Managermulti-value parameter,您需要在条件中使用IN 而不是=。尝试将 WHERE 子句的该部分更新为:

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

【讨论】:

  • 你成就了我的一天。谢谢。
【解决方案2】:

如果要将参数传递到查询中,则必须使用 Join 函数将值集合转换为字符串。然后,您可以使用自定义 Split 函数或 Like 运算符来检查 WHERE 子句中的值。

另一个选项是添加数据集过滤器。对于表达式,您将选择 NAME 列。使用“In”作为运算符”。对于值,请使用如下表达式:

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

这会将所选名称的集合转换为可以检查的数组。

【讨论】:

    【解决方案3】:

    我在使用带有“执行 SQL 任务”组件的 SSIS 时遇到了同样的错误。就我而言,我没有意识到我超过了大约。 32k 的 SQL 脚本字符。在这种情况下,请使用“浏览”按钮加载您的 SQL 代码或使用“脚本组件”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 2014-11-09
      • 2018-03-03
      • 2021-02-26
      • 2015-05-19
      • 1970-01-01
      相关资源
      最近更新 更多