【发布时间】:2014-07-08 14:22:47
【问题描述】:
我知道,在 Group By 中,您不能在 Select 中使用不在聚合函数或 GROUP BY 子句中的字段。
但是,必须有一个使用连接或其他方法的解决方法。
我有两个表 BMP_VISITS_SITES 和 BMP_VISITS_COMMENTS,它们通过 StationID 以一对多的关系连接。一个站点可以有多个 cmets。
我正在尝试编写一个返回所有站点和最新(仅 1 条)评论的查询。我有一个“工作”查询,但它只返回两个列,它们位于聚合函数或分组依据中。
这是我的“工作”查询:
select a.StationID,
MAX(b.[dateobserved]) as LastDateObserved,
a.Status
from BMP_VISITS_SITES a
left outer join BMP_VISITS_COMMENTS as b
on a.[StationID] = b.[StationID]
group by a.StationID;
但是如何访问两个表中的所有列?
我已经尝试了 1/2 成功的内部联接。当我将 BMP_VISITS_SITES 加入到上述查询中时,我得到了表 (t1) 的所有字段。太好了,但是一旦我尝试加入 BMP_VISITS_COMMENTS (t3),我得到的结果比我应该得到的要多。
select t1.*, t2.*
--,t3.*
from BMP_VISITS_SITES t1
inner join (
select a.StationID, MAX(b.[dateobserved]) as LastDateObserved from BMP_VISITS_SITES a
left outer join BMP_VISITS_COMMENTS as b
on a.[StationID] = b.[StationID]
group by a.StationID
) t2 on t2.StationID = t1.StationID
--inner join sde.BMP_VISITS_COMMENTS t3 on t3.StationID = t2.StationID;
【问题讨论】:
-
看看我提出的一个问题 - 可能会有所帮助! stackoverflow.com/questions/11116438/…
标签: sql sql-server