2013-11-22 47 views
-1
SELECT * 
FROM Customer 
INNER JOIN Ledger Entry on [No_] = [Customer No_] 
WHERE No_ NOT IN ([Posting Date] between '2013-10-01' and '2013-10-31')

BETWEEN條件不起作用。使用NOT IN時,BETWEEN條件不起作用

+0

嘗試'SELECT * FROM 客戶 上[NO_] = [客戶NO_] 這裏不是 '2013年10月1日' 之間[發佈日期]和 '2013年10月31日' 內加入總帳項' –

+0

'條件不起作用。:: whatz錯誤? –

回答

4

這不是如何not in的作品,你比較No_這似乎是Id客戶與Posting Date所以這應該失敗。

我想你想這樣的事情:

SELECT * 
FROM Customer c 
inner join [Ledger Entry] le on c.[No_] = le.[Customer No_] 
where c.[No_] not in (
         select l.[Customer No_] 
         from [Ledger Entry] l 
         where l.[Posting Date] between '2013-10-01' and '2013-10-31' 
        ) 

但對於這樣的查詢應該簡化爲:

SELECT * 
FROM 
Customer c 
inner join [Ledger Entry] le on c.[No_] = le.[Customer No_] 
where le.[Posting Date] < '2013-10-01' or le.[Posting Date] > '2013-10-31' 

不使用not inbetween在所有

+0

它應該是'OR',即'在哪裏。[發佈日期] <'2013-10-01'或者。[發佈日期]>'2013-10-31'' –

+0

@HarshGupta true,fixed。非常感謝你。 – gzaxx

+0

非常感謝gzaxx。事實上,我是SQL世界的新手,我仍在學習。 – user3020464

0

首先,你的日期應該與另一個日期類型列進行比較。
其次,根據Aaron Bertrand,你應該避免使用BETWEEN進行日期,你可以通過文章瞭解他是對的。
所以intead,我建議你繼續作爲;

SELECT * FROM Customer 
inner join LedgerEntry 
on Customer.[No_] = LedgerEntry.[Customer No_] 
where LedgerEntry.[Posting Date] < '2013-10-01' and LedgerEntry.[Posting Date] > '2013-10-31'