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条件不起作用
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条件不起作用
这不是如何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 in
和between
在所有
它应该是'OR',即'在哪里。[发布日期] <'2013-10-01'或者。[发布日期]>'2013-10-31'' –
@HarshGupta true,fixed。非常感谢你。 – gzaxx
非常感谢gzaxx。事实上,我是SQL世界的新手,我仍在学习。 – user3020464
首先,你的日期应该与另一个日期类型列进行比较。
其次,根据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'
尝试'SELECT * FROM 客户 上[NO_] = [客户NO_] 这里不是 '2013年10月1日' 之间[发布日期]和 '2013年10月31日' 内加入总帐项' –
'条件不起作用。:: whatz错误? –