IN运算符使用AND运算符

时间:2016-02-12 10:44:15

标签: sql sql-server reporting-services

我正在研究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)

这将带回两个调查中出现的问题。

如果之前有人问过,请道歉。我搜索了论坛,但无法找到答案。

非常感谢

0 个答案:

没有答案