快速简单的问题。
说我要加入两张桌子。我有主查询和子查询。子查询为我的结果集提取了一个额外的列。 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”。
有经验的人可以指出我正确的方向吗?
答案 0 :(得分:1)
您想要一个额外的join
和group 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';