我在解决SQL语法问题上遇到了问题。我有三个桌子我需要完全外部加入,但起初我正试图让它与其中两个一起工作。只是无法弄清楚出了什么问题。
这仍然有效:
SELECT SUM(A.charge-A.comp), COUNT(A.id)
FROM A
FULL JOIN init ON (A.house=init.house)
WHERE A.tag='V' AND A.house='first'
但是当我将init字段添加到选定列表时,它会出现语法错误。所以这个不再适用了:
SELECT SUM(A.charge-A.comp), COUNT(A.id), init.resp
FROM A
FULL JOIN init ON (A.house=init.house)
WHERE A.tag='V' AND A.house='first'
任何想法为什么会这样?
顺便说一下。我正在使用PostgreSQL 9.1。
答案 0 :(得分:2)
问题与加入无关。您需要group by
,因为您具有非聚合列的聚合函数。也许你的意思是:
SELECT SUM(A.charge-A.comp), COUNT(A.id), init.resp
FROM A
FULL JOIN init ON (A.house=init.house)
WHERE A.tag='V' AND A.house='first'
group by init.resp;
否则,您可能需要一些聚合函数:
SELECT SUM(A.charge-A.comp), COUNT(A.id), sum(init.resp)
FROM A
FULL JOIN init ON (A.house=init.house)
WHERE A.tag='V' AND A.house='first'