0

我在正确获取 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'

但是当我将初始化字段添加到选定列表时,它会给出语法错误。所以这个不再工作了:

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。

4

1 回答 1

2

该问题与加入无关。您需要 agroup 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'
于 2013-07-18T14:30:31.487 回答