表 A
表 B
我尝试使用LEFT OUTER JOIN
,但似乎无效..
如果指定的参数还没有数据,我希望查询从表A中提取所有数据,平均得分为0。意思是,在图3中,它应该显示ID为2,s为0。任何人都可以帮我找出解决方案吗?
答案 0 :(得分:1)
您在联接中切换了表名。为了保留表A的所有内容,它需要是左连接左侧列出的表。此外,您希望仅影响表B的输出而不过滤整个结果的任何内容都应移至左连接on
子句。应该是:
SELECT a.id,
Avg(Isnull(b.score, 0)) AS s
FROM a
LEFT OUTER JOIN b
ON a.id = b.id
AND b.kind = 'X'
GROUP BY a.id