首先,我将解释表的概念..
我有3个表,A,B和çSQL Server 2005和.NET查询
表A中包含新与旧牌照号码,也是日期当司机换了新的许可证
表A中包含
fdate | oldLicense (varchar) | newLicense (varchar)
12/14/2013 4:16:16 PM | 2 | 3
表B记录了许可证号和车号,还有第一天当他们用车时。请注意,在2013年12月14日,插入了新的许可证号码,这意味着司机在车上更换(,因为旧车不能再行驶或已经死亡)。
表B含有
ID_Car | licenseNumber | fDate
44 | 2 | 12/9/2013 4:16:16 AM
44 | 3 | 12/14/2013 4:16:16 PM
表C是对汽车进行的维修。注意它有日期,它应该反映何时驱动程序被改变。
例如,在2013年12月9日的驾照仍然为2,并在2013年12月15日的许可证已经是3
表C包含
Invoice | ID_Car | fDate
00989 | 44 | 12/9/2013 5:00:00 AM
10100 | 44 | 12/9/2013 6:00:00 AM
32323 | 44 | 12/15/2013 12:00:00 AM
所需的输出:
C.Invoice | A.Licenses (old and new?)
00989 | 2
10100 | 2
32323 | 3
我迄今为止尝试是:
SELECT B.fInvoice, C.fLicenseNew
FROM tblCarFranchise A
LEFT JOIN tblCarMaintenance B ON A.ID_Car = B.ID_Car
LEFT JOIN tblTaxiDriversRelation C ON A.fLicenseNumber = C.fLicenseNew
输出:
00989 | NULL
10100 | NULL
32323 | NULL
00989 | 3
10100 | 3
32323 | 3
我真的不知道我应该如何开始这一点,这可能是我面临迄今为止最复杂的查询,也排在某种程度上复制(共6行,而不是3行)
帮助T_T
UPDATE: @Szymon日Thnx帮助,也kumarch1
上的图像,车牌号码222333 = 2(对这个问题)和13213113 = 3
检查答案下面定义从 –
变化<>来!= –