2010-07-27 81 views
1

我正在努力进入一个SQL狂潮,希望有人可以帮助!SQL表A左连接表B和表B的顶部

我有2个表,其基本上是记录和结果,我想加入2代表一起,计算每个记录的结果(0或更多),我已经与有很容易的数量:

Select records.Id, (IsNull(Count(outcomes.Id),0)) as outcomes 
from records 
Left Join 
outcomes 
on records.Id = outcomes.Id 
group by 
records.Id 

结果表中还有一个时间戳,我想要做的是在结果集中包含最后一个结果,如果我添加了我的查询,它会为每个记录组合的结果生成一条记录。

任何SQL专家都可以指向正确的方向吗?

干杯,

+0

什么数据库您使用的? – Yellowfog 2010-07-27 11:22:06

回答

1

尝试:

SELECT 
    dt.Id, dt.outcomes,MAX(o.YourTimestampColumn) AS LastOne 
    FROM (SELECT --basically your original query, just indented differently 
       records.Id, (ISNULL(COUNT(outcomes.Id),0)) AS outcomes 
       from records 
        LEFT JOIN outcomes ON records.Id = outcomes.Id 
       GROUP BY records.Id 
     ) dt 
     INNER JOIN outcomes o ON dt.Id = o.Id 
    GROUP BY dt.Id, dt.outcomes 
+0

辉煌,几乎完美! 只需要将第二个Join加入到左连接中,否则我就失去了结果中没有任何内容的记录。谢谢! – HeHasMoments 2010-07-27 11:41:22

相关问题