如果您不喜欢用外部查询包装整个查询,您可以使用LATERAL
计算中间total_1
和total_2
:
SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_2,
total_1 + total_2 AS total_3
FROM data
,LATERAL(SELECT cost_1 * quantity_1, cost_2 * quantity_2) AS s1(total_1,total_2);
DBFiddle 演示
输出:
╔═════════╦═════════════╦═════════╦═════════════╦══════════╦══════════╦═════════╗
║ cost_1 ║ quantity_1 ║ cost_2 ║ quantity_2 ║ total_1 ║ total_2 ║ total_3 ║
╠═════════╬═════════════╬═════════╬═════════════╬══════════╬══════════╬═════════╣
║ 1 ║ 2 ║ 3 ║ 4 ║ 2 ║ 12 ║ 14 ║
║ 3 ║ 5 ║ 7 ║ 9 ║ 15 ║ 63 ║ 78 ║
║ 10 ║ 5 ║ 20 ║ 2 ║ 50 ║ 40 ║ 90 ║
╚═════════╩═════════════╩═════════╩═════════════╩══════════╩══════════╩═════════╝