使用子查询或参数时出错(但仅在使用两者时)

在Excel中使用SQL查询时遇到一个奇怪的问题。

有三个数据表:

Table1 | Table2 | Table3 ------ | ------ | ------ Field1 Field2 | Field1 Field2 | Field1 Field2 Field3 ------ | ------ | ------ item1 value1 | item1 date11 | item1 amount11 date1 item2 value2 | item1 date12 | item1 amount12 date2 item3 value3 | item1 date13 | item2 amount21 date3 | item2 date21 | item2 amount22 date4 | item2 date22 | item3 amount31 date5 | item2 date23 | item3 amount32 date6 | item3 date31 | | item3 date32 | | item3 date33 | 

我需要的是结果:

 item1 value1 date11 amount11+amount12 item2 value2 date23 amount21+amount22 item3 value3 date33 amount31+amount32 

其中第三列包含最近的date,所以MAX(Table2.Field2)和第四列是所有金额的总和,所以SUM(Table3.Field2)。 不过,我只需要inputdate下面的Table3中的date结果。

这就是我想到的:

 SELECT Table1.Field1, Table1.Field2, ( SELECT MAX (Table2.Field2) FROM Table2 WHERE Table2.Field1=Table1.Field1 ), SUM (Table3.Field2) FROM Table1, Table3 WHERE Table1.Field1=Table3.Field1 AND Table3.Field3<=? GROUP BY Table1.Field1 

这会产生以下错误:

 [Microsoft][ODBC SQL Server Driver][SQL Server]The multi-part identifier "Table3.Field3" could not be bound. 

如果我执行以下任一操作,错误将被“解决”:

  • 删除子查询。
  • 把date直接放在查询中,即replaceTable3.Field3 <=? 通过Table3.Field3 <>'20140101'或任何其他date。

这些都不是我的select,所以我有点卡住了。

任何人有任何build议? 🙂

如果我理解正确,可以通过连接和聚合来完成这一切:

 select t1.field1, t1.field2, t2.date1, sum(t3.field2) from table1 t1 join (select t2.field1, max(date1) as date1 from table2 t2 group by t2.field1 ) t2 on t1.field1 = t2.field1 join table3 t3 on t1.field1 = t3.field1 group by t1.field1, t1.field2, t2.date1;