在访问中我写了这个查询:
Select
I.sysid, I.MemberNumber, I.Date, I.Distributer,
F.MemberNumber as FMember, F.Date as FDate, I.Distributer as FDistributer
From Initial as I
Left Join Final as F ON
I.MemberNumber=F.MemberNumber and
I.Distributer=F.Distributer and
I.Date>=F.Date-14 and
I.Date<=F.Date+14;
但左连接的行为不正确。在这个表中有更少的行然后在初始...但它应该保持所有行从初始,因为我使用左连接,对吧?我在初始发现了几行(比如sysid = 7,这是Initial的密钥),但是没有进入这个表。
答案 0 :(得分:2)
它可能与您的AND逻辑有关。添加一些()括号到这包括所有这样:
Select
I.sysid, I.MemberNumber, I.Date, I.Distributer,
F.MemberNumber as FMember, F.Date as FDate, I.Distributer as FDistributer
From Initial as I
Left Join Final as F ON
(I.MemberNumber=F.MemberNumber and
I.Distributer=F.Distributer and
(I.Date>=F.Date-14) and
(I.Date<=F.Date+14));
另外我认为有一个dateadd function,我会使用它而不是+ / - 。
答案 1 :(得分:1)
如果您在查询设计器中,请确保清除所有过滤器。我已经构建了你的表和sql,无法重现你的错误。
SELECT I.sysid
, I.MemberNumber
, I.Dated
, I.Distributer
, F.MemberNumber
, F.Dated AS FDated
, F.Distributer AS FDistributer
FROM Initial AS I
LEFT JOIN Final AS F
ON I.Distributer = F.Distributer
AND I.MemberNumber = F.MemberNumber
AND I.Dated>=F.Dated-14
AND I.Dated<=F.Dated+14;
答案 2 :(得分:0)
尝试向原始表添加其他字段,并使用更新查询添加额外的列。通过这种方式,您可以确保不会丢弃任何列。