如何在t-SQL中应用多个组合条件,而不让这些条件单独影响结果



我有两个表格和答案。问题表中有" QuestionType"列,其值是1,如果问题是类型的文本,并且2如果问题具有预定的答案选项,例如无线电,下拉

我正在尝试T-SQL,如果答案具有价值,我只需要针对问题的答案。现在,对于QuartionType,如果值为无效或空为空,则无需答案,这将是填充物,但是对于QuartionType 2,即使有答案,它也会始终为null,因为还有另一个表拿着该信息。

我需要答案,即使有价值存在的位置,但也需要Questiontype,即使在答案中具有无效的值

我在以下方面做过,但是我不想要

的QuartionType 2条件规则
FROM [dbo].[MyTable] AS sur
INNER JOIN [dbo].[SurveyQuestions] AS surQus ON sur.Id = surQus.SurveyId
INNER JOIN [dbo].[Questions] AS qus ON surQus.QuestionId = qus.Id
LEFT JOIN [dbo].[Responses] AS res ON res.SurveyId = sur.Id
LEFT JOIN [dbo].[Answers] AS ans ON res.Id = ans.ResponseId AND qus.Id = ans.QuestionId 
LEFT JOIN [dbo].[AnswerOptions] AS ansOpt ON ans.Id = ansOpt.AnswerId
LEFT JOIN [dbo].[QuestionOptions] AS qusOpt ON ansOpt.QuestionOptionId = qusOpt.Id
 WHERE con.Id = '00000011-0013-4D34-8888-7E7189CA348U'
    AND (qus.QuestionType ='1' AND ans.Value IS NOT NULL ) //???????? NEED HELP HERE

如果我理解您的问题,则需要一个或语句,每组条件在他们自己的括号中,被一组主要的括号包围。

FROM [dbo].[MyTable] AS sur
INNER JOIN [dbo].[SurveyQuestions] AS surQus ON sur.Id = surQus.SurveyId
INNER JOIN [dbo].[Questions] AS qus ON surQus.QuestionId = qus.Id
LEFT JOIN [dbo].[Responses] AS res ON res.SurveyId = sur.Id
LEFT JOIN [dbo].[Answers] AS ans ON res.Id = ans.ResponseId AND qus.Id = ans.QuestionId 
LEFT JOIN [dbo].[AnswerOptions] AS ansOpt ON ans.Id = ansOpt.AnswerId
LEFT JOIN [dbo].[QuestionOptions] AS qusOpt ON ansOpt.QuestionOptionId = qusOpt.Id
 WHERE con.Id = '00000011-0013-4D34-8888-7E7189CA348U'
    AND (
        (qus.QuestionType ='1' AND ans.Value IS NOT NULL )
        OR
        (qus.QuestionType ='2')
        )

最新更新