小编uno*_*ary的帖子

PostgreSQL LEFT JOIN无法正常工作

我有2张桌子:

T1 (id, flag1)
T2 (id, amount, date, flag2, t1_id);
Run Code Online (Sandbox Code Playgroud)

我有以下查询:

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
Run Code Online (Sandbox Code Playgroud)

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

sql postgresql left-join

6
推荐指数
1
解决办法
1428
查看次数

ORDER BY PostgreSQL中的复杂表达式

我试图ORDER BY 2个双精度值(别名列)之间的差异,但它没有看到别名列.

例:

SELECT COALESCE(
  ROUND(
   SUM(amount * currency1.rate / currency2.rate)
   , 4)
 , 0) AS first_amount,
SUM(
   (SELECT
     COALESCE(
       ROUND(
         SUM(table2.amount * currency3.rate / currency2.rate)
       , 4)
     , 0)
   FROM table2
     JOIN currencies currency3
       ON currency3.id = table2.currency_id
   WHERE table2.date BETWEEN table1.start_date AND table1.end_date
   )
 ) AS second_amount
 FROM table1
 JOIN currencies currency1
   ON currency3.id = table1.currency_id
 JOIN currencies currency2
   ON currency3.id = 123  # some hardcoded ID
 ORDER BY first_amount - second_amount ASC
Run Code Online (Sandbox Code Playgroud)

Postgres告诉我,first_amount列不存在.阅读文档,我看到Postgres 9.0不允许带有别名列的表达式.

如何通过以正确的方式对所需的所有东西进行排序来解决问题?

sorting postgresql

1
推荐指数
1
解决办法
60
查看次数

标签 统计

postgresql ×2

left-join ×1

sorting ×1

sql ×1