此查询完成了这项工作,但我确信它可以改进。任何提示将不胜感激:))
SELECT RIH.ItemName, RI.FieldAnswer, RIH.IsConditional
FROM ReportItemHeader AS RIH
INNER JOIN ReportItem AS RI
ON RIH.ItemID = RI.ItemID
AND RIH.ReportID = RI.ReportID
WHERE RIH.ReportID = 2080258
AND RIH.SectionNumber = 3
EXCEPT
SELECT RIH.ItemName, RI.FieldAnswer, RIH.IsConditional
FROM ReportItemHeader AS RIH
INNER JOIN ReportItem AS RI
ON RIH.ItemID = RI.ItemID
AND RIH.ReportID = RI.ReportID
WHERE RIH.ReportID = 2080258
AND RIH.SectionNumber = 3
AND RIH.IsConditional = 1
AND RI.FieldAnswer = ''
答案 0 :(得分:4)
如果您调整第一个SELECT
子句,则可以删除第二个WHERE
,如下所示:
SELECT RIH.ItemName, RI.FieldAnswer, RIH.IsConditional
FROM ReportItemHeader AS RIH
INNER JOIN ReportItem AS RI
ON RIH.ItemID = RI.ItemID AND RIH.ReportID = RI.ReportID
WHERE RIH.ReportID = 2080258 AND RIH.SectionNumber = 3
AND NOT(RIH.IsConditional = 1 AND RI.FieldAnswer = '')