2013-04-17 30 views
1

嗨我想在物种数据库上运行查询。我想查询独特的值,但也发现物种第一次被发现的那一年。MS Access SQL找到一个值第一次出现

到目前为止,我有这样的:

SELECT DISTINCT [Genus_HeTR] & " " & [Species_HeTR] AS Species 
FROM HeTR_Rec 
WHERE [Species_HeTR] <> "sp." 
UNION SELECT DISTINCT [Genus_HeOP] & " " & [Species_HeOP] AS Species 
FROM HeOP_Rec 
WHERE [Species_HeOP] <> "" 
AND [Species_HeOP] <> "sp."; 

我串接属和种的名称,并从两个不同的表添加数据(因此UNION)。这提供了一个物种清单,但我想知道在这个地方看到物种的一年。

回答

1

我会冒险猜测你的源表格包含一个日期/时间字段,其中存储了每个观察日期。如果是这样,您可以从2个表中获取UNION数据,并将其用作GROUP BY查询中的子查询源,从中获取每个物种的最小观测年份。

SELECT 
    sub.Species, 
    Min(sub.observation_year) AS first_sighting_year 
FROM 
    (
     SELECT 
      [Genus_HeTR] & " " & [Species_HeTR] AS Species, 
      Year(observation_date) AS observation_year 
     FROM HeTR_Rec 
     WHERE [Species_HeTR] <> "sp." 
     UNION ALL 
     SELECT 
      [Genus_HeOP] & " " & [Species_HeOP] AS Species, 
      Year(observation_date) AS observation_year 
     FROM HeOP_Rec 
     WHERE [Species_HeOP] <> "" 
     AND [Species_HeOP] <> "sp." 
    ) AS sub 
GROUP BY sub.Species; 
+0

HansDown最好。感谢Hans。你假设我在那里有一年是对的。然而,它是在另一张桌子上举行的(场合是时间日期天气等,记录包含着各个物种),我只是做了一个独立的查询并在上面的代码中使用它来代替原始表格。虽然工作像一个魅力。再次感谢。 –

+0

我从HansDown笑了起来。谢谢你,Birdkin。 :-) – HansUp

+1

这里全周;) –