2017-02-14 47 views
0

我有数据库表P它看起来是这样的:困惑与子查询连接

date  wellID rate 
01/01/1988 well01 300 
01/02/1988 well01 301 
01/03/1988 well01 310 
........ 
01/04/1988 well02 500 
01/05/1988 well02 490 
01/06/1988 well02 495 
........ 
01/04/1988 well03 700 
01/05/1988 well03 750 
01/06/1988 well03 700 
........ 
01/07/1989 well04 400 
01/08/1989 well04 350 
01/09/1989 well04 340 
........ 

我想提取每个初始速率也即,对于每个最早记录的日期相处得很好用关联率。我期待这样的事情:

date  wellID oil 
01/01/1988 well01 300 
01/04/1988 well02 500 
01/04/1988 well03 700 
01/07/1989 well04 400 

我尝试使用下面的SQL查询

SELECT p.date, p.wellID, p.oil 
FROM p 
LEFT JOIN 
(
    SELECT wellID, min(date) AS MinDate 
    FROM p 
) AS a 
ON p.wellID = a.wellID 
WHERE p.date = a.MinDate; 

来提取访问这些数据,但Access给出了这样的消息:“你试图执行一个查询,不包括指定的表达式'WellId'作为聚合函数的一部分“。恐怕这超出了我对SQL的有限知识,所以所有帮助表示赞赏

谢谢!

+0

感谢胡安·巴纳德你的答案 - 这奏效了 – PetGriffin

回答

2

添加group by,你可能想INNER JOIN这种情况

INNER JOIN 
(
    SELECT wellID, min(date) AS MinDate 
    FROM p 
    GROUP BY wellID 
) AS a 
0

您可以通过子句内聚集查询留下了一个组。

试试这个:

SELECT p.date, p.wellID, p.oil 
FROM p 
LEFT JOIN 
(
    SELECT wellID, min(date) AS MinDate 
    FROM p 
    GROUP BY wellID 
) AS a 
ON p.wellID = a.wellID 
WHERE p.date = a.MinDate; 
+0

使用'控制k'或添加4个空格作为代码的格式。 –