2012-10-11 60 views
2

我有两个表。Oracle SQL Left加入除“加入”字段以外的字段和字段

第一张表是“a”,字段为a.pr,a.info和a.id.第二个表是带有b.id和b.amount字段的“b”。

a.id = b.id,尽管多个b.id可能与单个a.id匹配。

我的SQL语句如下:

SELECT a.pr, a.info, a.id, SUM(b.amount) AS total 
FROM a 
LEFT JOIN b ON a.id=b.id 
WHERE a.pr = "549" 
GROUP BY a.id 

现在,这是行不通的。它会抛出“不是GROUP BY表达式”错误。据我了解,我需要一个子查询,但是我发现的例子中没有一个与我想要完成的任务完全匹配,而且我也无法让其中任何一个正确工作。

在这种情况下,完整的SQL语句(带有子查询)会是什么样子?

回答

1

你应该在你的SELECT子句中的所有字段组:

SELECT a.pr, a.info, a.id, SUM(b.amount) AS total 
FROM a 
LEFT JOIN b ON a.id=b.id 
WHERE a.pr = "549" 
GROUP BY a.pr, a.info, a.id 

ORA-00979

+0

废话是组的所有列,我正要张贴此。做得好 –