我使用的是postgresql数据库,有2个表。它们有相同类型的列。
Table1
id sale material
1 10 m1
2 2 m2
3 3 m1
4 40 m3
5 50 m2
Table2
id name material
1 5 m3
2 15 m1
3 20 m1
4 20 m3
5 10 m1
字符串
所以我想得到一个连接的SQL像这样:
material table1_sale table2_sale
m1 13 45
m2 52 0
m3 40 25
型
使用查询
select t1.material , sum(t1.sale), sum(t2.sale)
from table1 t1
join table2 t2 on t1.material = t2.material
group by t1.material, t2.material
型
但是得到错误的结果。我该怎么做?
3条答案
按热度按时间jq6vz3qz1#
当前查询对错误结果求和,因为它对来自此查询的值求和:
字符串
在dbfiddle中显示一些步骤,这是最终的查询:
型
请参阅:DBFIDDLE
6l7fqoea2#
一种可能的方法是在加入之前通过
material
聚合sale
。字符串
输出量:
| 材料|table1_sale| table2_sale|
| --|--|--|
| M1| 13 | 45 |
| M2| 52 | 0 |
| M3| 40 | 25 |
db<>fiddle
jecbmhm33#
是的,在加入之前。
我是用WITH子句做的,因为我更喜欢它的可读性。
字符串