PostgreSQL LEFT JOIN无法正常工作

时间:2014-08-07 15:16:04

标签: sql postgresql left-join

我有两张桌子:

T1 (id, flag1)
T2 (id, amount, date, flag2, t1_id);

我有以下查询:

SELECT T1.id, ROUND(COALESCE(SUM(T2.amount), 0), 2) AS spent_amount
FROM T1
LEFT JOIN T2 ON T2.t1_id = T1.id
WHERE T2.date <= '2014-01-01' AND T2.flag2 = 't' AND T1.flag1 = 't'
GROUP BY T1.id

问题是我希望在结果中有一行,例如:id = 123, spent_amount = 0如果我在T1中有一个入口,但在T2中没有连接的行

1 个答案:

答案 0 :(得分:8)

在T2上有一个WHERE子句,它将过滤掉所有NULLS:

SELECT T1.id, ROUND(COALESCE(SUM(T2.amount), 0), 2) AS spent_amount 
FROM T1 
LEFT JOIN T2 
    ON T2.t1_id = T1.id 
    AND T2.date <= '2014-01-01' 
    AND T2.flag2 = 't' 
WHERE T1.flag1 = 't'