子查询语法在Microsoft Query中的差异

我上周发布了一个关于在Microsoft Query中使用子查询的问题,尽pipe在那个例子中我的问题没有解决,但是我发现问题比以前的情况要复杂得多。

我通过ODBC尝试在Microsoft Query(从Excel 2010)中连接到一个Informix数据库来执行一个简单的查询,并且在尝试使子查询的语法正确时遇到了很多麻烦。 我有一种感觉,MSQuery被挂在与Informix / ODBC源相关的一些特质上。 我之所以这样想是因为如果我尝试使用Excel电子表格作为数据源的一个非常简单的子查询,下面的语法工作:

SELECT * FROM ( SELECT x0.field1, x0.field2 FROM `C:\USERS\NAME\DIRECTORY\Test.xlsx`.`Sheet1$` x0 ) 

但是,当我使用Informix数据库中的子查询尝试相同的非常简单的查询时,

 SELECT * FROM ( SELECT x0.id, x0.creation_date FROM coastal.waybill x0 ) 

我得到了错误"Could not add the table '(select'."我可以推测是在MSQuery中使用的语法必须适合数据源。但是,当我查找Informix中的子查询的语法条款我更加困惑,因为看起来我遵循他们的语法来开球,因为他们的例子是:

 SELECT LIMIT 1 * FROM (SELECT c.customer_num, c.lname, c.company, c.phone, u.call_dtime, u.call_descr FROM customer c, cust_calls u WHERE c.customer_num = u.customer_num ORDER BY u.call_dtime DESC); 

我彻底失去了。 任何援助将不胜感激!

你有没有尝试过这样的表别名:

 SELECT a.* FROM ( SELECT x0.id, x0.creation_date FROM coastal.waybill x0 ) a 

我过去MS查询了很多关于Oracle数据库和子查询不需要别名,然后我转移到MS SQL,这需要他们。