【发布时间】:2019-09-12 13:24:29
【问题描述】:
我的一个表包含 6 位标志:
tblDocumentFact.useCase1
tblDocumentFact.useCase2
tblDocumentFact.useCase3
tblDocumentFact.useCase4
tblDocumentFact.useCase5
tblDocumentFact.useCase6
位标志用于限制通过HAVING子句返回的数据,例如:
HAVING tblDocumentFact.useCase4 = 1 /* '1' means 'True' */
这适用于静态查询。该查询针对 SQL Server Reporting Services 报表的数据集。我不想有 6 个报告,每个位标志一个,我希望有 1 个带有 @UserChoice 输入参数的报告。我正在尝试编写一个动态查询来根据 @UserChoice 参数构造 HAVING 子句。我认为当用户单击 1-of-6 选项按钮时,@UserChoice 可以设置为整数值(1、2、3、4、5 或 6)。我尝试通过如下所示的 CASE 表达式来执行此操作,但它不起作用——查询不返回任何行。这里的正确方法是什么?
HAVING (
(CASE WHEN @UserChoice =1 THEN 'dbo.tblDocumentFact.useCase1' END) = '1'
OR (CASE WHEN @UserChoice =2 THEN 'dbo.tblDocumentFact.useCase2' END) = '1'
OR (CASE WHEN @UserChoice =3 THEN 'dbo.tblDocumentFact.useCase3' END) = '1'
OR (CASE WHEN @UserChoice =4 THEN 'dbo.tblDocumentFact.useCase4' END) = '1'
OR (CASE WHEN @UserChoice =5 THEN 'dbo.tblDocumentFact.useCase5' END) = '1'
OR (CASE WHEN @UserChoice =6 THEN 'dbo.tblDocumentFact.useCase6' END) = '1'
)
【问题讨论】:
标签: sql dynamic reporting-services case having