首页 > 解决方案 > SQL Server SSRS 查询问题

问题描述

我有以下查询:

SELECT        
    pupils.txtSchoolID, pupils.txtPreName, pupils.txtSurname,
    pupils.txtForm, pupils.txtAdditionalHealth, pupils.txtAllergyNotes,
    notes.txtNote
FROM 
    TblPupilManagementPupils AS pupils 
LEFT OUTER JOIN
    TblPupilManagementHealthNotes AS notes ON pupils.txtSchoolID = notes.txtSchoolID

我只需要拉notes.txtNotewhen notes.txtType = 'Dietary',但是,当我在一个WHERE子句中设置它时,我只得到带有饮食类型的条目,我仍然需要所有学生的表格数据。我认为左外连接会这样做。

设置WHERE子句时,我尝试

WHERE notes.txtType = 'Dietary' 

但这也不起作用,我暂时设置为参数。

标签: sql-serverreporting-services

解决方案


您必须删除 where 子句并将该条件放在子句上,因为

从逻辑上讲,所有 JOIN 都使用 ON 过滤器作为 INNER JOIN 执行,然后,作为后续步骤,将任何 OUTER JOIN 行添加回必要的一侧。在所有 JOIN 完成后,将处理 WHERE 过滤器。结果,当您将其应用于删除所有期望值Dietary记录的位置时

SELECT        pupils.txtSchoolID, pupils.txtPreName, pupils.txtSurname,
pupils.txtForm, pupils.txtAdditionalHealth, pupils.txtAllergyNotes,
notes.txtNote

FROM TblPupilManagementPupils AS pupils LEFT OUTER JOIN
TblPupilManagementHealthNotes AS notes
ON pupils.txtSchoolID = notes.txtSchoolID and notes.txtType = 'Dietary'

推荐阅读