我正在研究SSRS中的报告,该报告将一个参数的结果传递给另一个参数。
第一个参数@survey
是一个调查列表
第二个参数@question
是问题列表
从@survey
中选择调查时,它使用以下SQL在@question
上填写所述调查问题列表:
SELECT DISTINCT dimSurveyQuestion.QuestionID, dimSurveyQuestion.QuestionCaption,
factSurveyResponseAnswer.SectionID, factSurveyResponseAnswer.DisplayOrder
FROM dimSurveyQuestion
INNER JOIN factSurveyResponseAnswer
ON dimSurveyQuestion.QuestionID = factSurveyResponseAnswer.QuestionCaptionID
WHERE (factSurveyResponseAnswer.SurveyID IN (@Survey))
ORDER BY factSurveyResponseAnswer.SectionID,
factSurveyResponseAnswer.DisplayOrder
客户希望能够从@survey
参数中选择多个调查,然后在@question
参数中填入可在所有选定调查中找到的所有问题。< / p>
我了解通过在IN
子句中使用WHERE
运算符,这将使用OR
运算符
因此,如果在Survey1
参数中选择了值Survey2
和@survey
,则SQL的WHERE
子句实际上是在说:
WHERE (factSurveyResponseAnswer.SurveyID = Survey1 OR
factSurveyResponseAnswer.SurveyID = Survey2)
无论如何,我可以通过@survey参数和我的WHERE
子句传递多个值来动态地说:
WHERE (factSurveyResponseAnswer.SurveyID = Survey1 AND
factSurveyResponseAnswer.SurveyID = Survey2)
这将带回两个调查中出现的问题。
如果之前有人问过,请道歉。我搜索了论坛,但无法找到答案。
非常感谢