0
我想拉开具有大于30,60和90天的出发日期(全部来自同一文件)的Folio ID。如果其中一个ID的日期少于30天,我不希望这个ID被拉下。 只有当该ID的出发日期大于30,60或90天时,我也希望为带有空白(空?)出发日期的作品集ID拉取日期。Excel/VBA/ADO - SQL查询不返回正确的结果
我尝试了左,内,右和嵌套连接的多种组合(感谢提供给前一个问题的答案)。我已经接近,但由于某种原因,我的查询并没有拉出任何空白的出发日期,即使我知道它们存在。我的查询到目前为止如下:
sSQL = "SELECT t1.[Folio Type], t1.[Folio ID],t1.[Departure Date],t1.[Folio Total]"
sSQL = sSQL & " FROM"
sSQL = sSQL & " (SELECT [Folio Type], [Folio ID],[Folio Total],[Departure Date]"
sSQL = sSQL & " FROM [Individual Folios$B2:O150000] GROUP BY [Folio Type],[Folio ID],[Folio Total],[Departure Date]"
sSQL = sSQL & " HAVING [Folio Total] <> 0 and [Departure Date] < " & G30E & ") As t1 "
sSQL = sSQL & " LEFT JOIN"
sSQL = sSQL & " (SELECT [Folio Type],[Folio ID],[Departure Date],[Folio Total]"
sSQL = sSQL & " FROM [Individual Folios$B2:O150000]"
sSQL = sSQL & " group by [Folio Type],[Folio ID],[Departure Date],[Folio Total]"
sSQL = sSQL & " HAVING [Folio Total] <> 0 and ([Departure Date] > " & G30E & " or [Departure Date] is null)) as t2"
sSQL = sSQL & " on t1.[Folio ID] = t2.[Folio ID]"
sSQL = sSQL & " where t2.[Folio ID] is null"
我也有类似的查询(即试图完成同样的事情,第一次查询)使用嵌套的联接。我认为这两个查询应该拉相同的值,但总数是不同的:
sSQL = "SELECT t1.[Folio Type], t1.[Folio ID],t1.[Departure Date],t1.[Folio Total]"
sSQL = sSQL & " FROM"
sSQL = sSQL & " ((SELECT [Folio Type], [Folio ID],[Folio Total],[Departure Date]"
sSQL = sSQL & " FROM [Individual Folios$B2:O150000] GROUP BY [Folio Type],[Folio ID],[Folio Total],[Departure Date]"
sSQL = sSQL & " HAVING [Folio Total] <> 0 and [Departure Date] < " & G30E & ") As t1 "
sSQL = sSQL & " LEFT JOIN"
sSQL = sSQL & " (SELECT [Folio Type],[Folio ID],[Departure Date],[Folio Total]"
sSQL = sSQL & " FROM [Individual Folios$B2:O150000]"
sSQL = sSQL & " group by [Folio Type],[Folio ID],[Departure Date],[Folio Total]"
sSQL = sSQL & " HAVING [Folio Total] <> 0 and [Departure Date] > " & G30E & ") as t2"
sSQL = sSQL & " on t1.[Folio ID] = t2.[Folio ID])"
sSQL = sSQL & " LEFT JOIN"
sSQL = sSQL & " (SELECT [Folio Type],[Folio ID],[Departure Date],[Folio Total]"
sSQL = sSQL & " FROM [Individual Folios$B2:O150000]"
sSQL = sSQL & " group by [Folio Type],[Folio ID],[Departure Date],[Folio Total]"
sSQL = sSQL & " HAVING [Folio Total] <> 0 and [Departure Date] is null) as t3"
sSQL = sSQL & " on t1.[Folio ID] = t3.[Folio ID]"
sSQL = sSQL & " where t2.[Folio ID] is null or t3.[Folio ID] is null"
任何帮助,非常感谢。
OP用于连接到Excel工作簿的Jet/ACE SQL引擎不支持窗口函数。 WITH()不起作用。 – Parfait
你的权利 - 排序 - WITH以上是一个SQL函数,而不是Windows函数。但是你很可能是正确的,不支持Jet或其他非SQL Server驱动程序。工会可能会工作,只需要更多的打字。 – rheitzman