我目前正在嘗試複製SQL服務器中的MS Access查詢,並且遇到了一些有關此查詢的問題。在SQL服務器中重寫訪問查詢的問題
我正在使用我的新查詢在SQL Server中獲取太多記錄。 原始MS Access查詢 - 產生64632條記錄
SELECT DISTINCT * FROM Deb D INNER JOIN Bals B ON D.ID = B.ID
WHERE
(
D.ID > 9999999
AND (B.TYPE <> 'DV' Or B.TYPE Is Null)
AND (D.SEC < 9999800 And D.SEC <> 9999000 And D.SEC <>9999100)
AND (B.BR<>'C2' Or B.BR<>'TA')
)
OR
(
D.ID > 9999999
AND (B.TYPE <> 'DV' Or B.TYPE Is Null)
AND (D.SEC < 9999800 And D.SEC <> 9999000 And D.SEC <>9999100)
AND B.BR Is Null
)
新版本的SQL產生64658條記錄
SELECT DISTINCT * FROM Deb D INNER JOIN Bals B ON D.ID = B.ID
WHERE
D.ID > 9999999
AND (B.TYPE <> 'DV' Or B.TYPE Is Null)
AND (D.SEC < 9999800 And D.SEC <> 9999000 And D.SEC <>9999100)
AND (
(B.BR<>'C2' Or B.BR<>'TA')
Or
(B.BR Is Null)
)
正如你可以看到我結合WHERE
條款,因爲只有在從2個原OR
報表項目區別是這
(B.BR<>'C2' Or B.BR<>'TA')
Or
(B.BR Is Null)
我知道問題來自B.BR<>'C2' Or B.BR<>'TA'
在SQL服務器中。它仍然包括'C2'和'TA'值的項目,儘管它們應該被排除。我無法弄清楚如何解決這個問題。建議?
試'B.BR <> 'C2' 和B.BR <>「TA'' –