我正在嘗試爲我的內部客戶進行查詢。我有兩個表A
和B
。 A
存儲整個月的所有銷售交易數據。 B
存儲特定部門整個月的所有銷售交易數據(形式略有不同)。篩選SQL加入
結果客戶的需求是從表B中的所有檢查#秒,加表A的任何檢查#分別匹配任何檢查#分別在表B中和具有的1, 2, or 3
一個T_ID
值。
注意:在A和B中,支票#都可以有多個條目。
我認爲我有查詢權(??),但客戶告訴我「看起來不正確」(具體來說,他說我們正在拉太多表A的記錄)。
我對自己的SQL沒有足夠的信心來反駁他(並且這個查詢返回了幾千行),所以我想知道是否有人可以在下面給出查詢,讓我知道我要去哪裏?
這是MS SQL Server上運行2000
SELECT
A.T_ID,
A.check_number,
A.check_type_id,
A.cashier_id,
A.terminal_id,
A.first_tender,
A.tendered_date_time,
A.tender_amount,
A.change_amount,
A.net_tender_amount,
A.currency_received,
B.account_name,
B.account_number
FROM tCTD AS A
INNER JOIN tGAAAD AS B
ON A.check_number = B.check_number
WHERE EXISTS
( SELECT *
FROM tCTD
WHERE check_number = A.check_number
AND T_ID IN (1, 2, 3)
);
EXISTS語句中的where子句不應該是WHERE check_number = B.check_number ?? –