使用子查询中的主查询参数进行聚合的多连接表

时间:2014-06-16 22:26:00

标签: sql join where aggregate

快速简单的问题。

说我要加入两张桌子。我有主查询和子查询。子查询为我的结果集提取了一个额外的列。 LEFT JOIN如果table b中没有匹配的列我仍然希望从table a获取所有列,则会select a.*, b.sumb from ta a left join (select b.uid, sum(b.amount) as sumb from tb b group by b.uid) b on a.uid = b.uid where a.eid = 'value'; 说明这一事实。

year

效果很好。问题我需要根据每个select a.*, b.sumb from ta a left join (select b.uid, sum(b.amount) as sumb from tb b where b.year = a.year group by b.uid) b on a.uid = b.uid where a.eid = 'value'; 分组限制内部查询求和的结果列表。否则查询将只对所有内容求和。

类似的东西:

where

不幸的是,这个{{1}}子句会抛出错误

  

无法绑定多部分标识符“a.year”。

有经验的人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您想要一个额外的joingroup by列:

select a.*, b.sumb
from ta a left join
     (select b.uid, b.year, sum(b.amount) as sumb
      from tb b
      group by b.uid, b.year
     ) b
     on a.uid = b.uid and a.year = b.year
where a.eid = 'value';