0

where句で一連の行フィルターを返すことになっているSQL選択クエリがあります。「OR」を追加するまですべてが機能し、正しい行が返されないようです。(Sql server management Studio 2008)

これが私のクエリです:

Select @Command = 
'select DISTINCT C.FileID, C.FileName, convert(nvarchar,C.DateReported,111) AS ''DateReported'', 
C.FileDetailsPlainText, CFIT.Level3 as ''InvestigationType'', INV.FName + '' '' + INV.LName AS ''Name'', 
convert(nvarchar,DD,111) AS ''DD'', i.FirstName + '' '' + i.LastName AS ''ReportedBy''
from CaseFiles C 
join InvestigatorCaseFileAccess IA on C.FileID=IA.CaseFileID 
JOIN CaseFileTimeBills tb on C.FileID=tb.FileID
JOIN CaseFileExpenses e on C.FileID=e.FileID

left join Element07a_Persons i on i.PersonID = c.PersonID
LEFT OUTER JOIN CaseFileInvestigationTypes CFIT ON C.InvestigationTypeID = CFIT.InvestigationTypeID 
LEFT OUTER JOIN Investigators INV ON C.InvestigatorID = INV.InvestigatorID
where Deleted=0 and IA.InvestigatorID=' + CONVERT (nvarchar(max),@InvestigatorID) + ' and IA.AllowAccess = ''True'' 
and tb.InvNumber IS NULL OR e.InvNumber IS NULL '
END

「tb.Invnumber IS NULL OR e.Invnumber IS NULL」は、返されるはずの行を返していません。クエリを実行すると、5 行が返されますが、5 行以上が返されることがわかっています。

4

1 に答える 1

2

括弧を追加すると問題が解決すると思います:

Select @Command = 
'select DISTINCT C.FileID, C.FileName, convert(nvarchar,C.DateReported,111) AS ''DateReported'', 
C.FileDetailsPlainText, CFIT.Level3 as ''InvestigationType'', INV.FName + '' '' + INV.LName AS ''Name'', 
convert(nvarchar,DD,111) AS ''DD'', i.FirstName + '' '' + i.LastName AS ''ReportedBy''
from CaseFiles C 
join InvestigatorCaseFileAccess IA on C.FileID=IA.CaseFileID 
JOIN CaseFileTimeBills tb on C.FileID=tb.FileID
JOIN CaseFileExpenses e on C.FileID=e.FileID

left join Element07a_Persons i on i.PersonID = c.PersonID
LEFT OUTER JOIN CaseFileInvestigationTypes CFIT ON C.InvestigationTypeID = CFIT.InvestigationTypeID 
LEFT OUTER JOIN Investigators INV ON C.InvestigatorID = INV.InvestigatorID
where Deleted=0 and IA.InvestigatorID=' + CONVERT (nvarchar(max),@InvestigatorID) + ' and IA.AllowAccess = ''True'' 
and (tb.InvNumber IS NULL OR e.InvNumber IS NULL)'
END
于 2012-11-05T19:03:37.853 に答える