我正在尝试建立具有多个条件的访问查询。要查询的表是“ tblVendor”,其中包含有关供应商装运数据的信息,如下所示:
第二个表是“ tblSchedule”,其中包含每个供应商截止日期的时间表。该表具有数据分析的截止日期。
对于每个供应商,我需要选择ShipDate> = CutoffDate的记录。尽管此处的数据未显示,但多个供应商可能具有相同的CutoffDate。对于“ tblCutoffdate”中的少量记录,我可以编写如下查询:
SELECT tblVendors.ShipmentId, tblVendors.VendorNumber, tblVendors.VendorName,
tblVendors.Units, tblVendors.ShipDate
FROM tblVendors INNER JOIN tblCutoffDate ON tblVendors.VendorNumber =
tblCutoffDate.VendorNumber
WHERE (((tblVendors.VendorNumber) In (SELECT VendorNumber FROM [tblCutoffDate] WHERE
[tblCutoffDate].[CutoffDate] = #2/1/2014#)) AND ((tblVendors.ShipDate)>=#2/1/2014#)) OR
(((tblVendors.VendorNumber) In (SELECT VendorNumber FROM [tblCutoffDate] WHERE
[tblCutoffDate].[CutoffDate] = #4/1/2014#)) AND ((tblVendors.ShipDate)>=#4/1/2014#));
根据需要,该查询为我提供了一个类似于以下内容的结果:
现在让我担心的是,我在“ tblCutoffDate”中添加了很多记录,这使我很难对查询中的日期进行硬编码。有没有更好的方式编写上面的SQL语句而无需任何硬编码?
一个更简单的WHERE
子句应该可以为您提供所需的内容。
SELECT
v.ShipmentId,
v.VendorNumber,
v.VendorName,
v.Units,
v.ShipDate
FROM
tblVendors AS v
INNER JOIN tblCutoffDate AS cd
ON v.VendorNumber = cd.VendorNumber
WHERE v.ShipDate >= cd.CutoffDate;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句