这是我的table:
帐户
ac name
120 Tom
130 Jony
140 Jone
面包大甩卖
ac pcs amount date
120 12 60 2018-01-03
120 10 50 2018-01-04
140 8 40 2018-01-04
130 5 25 2018-01-05
水货销售
ac pcs amount date
130 2 30 2018-01-03
130 5 75 2018-01-04
140 3 45 2018-01-04
130 4 60 2018-01-05
120 5 75 2018-01-07
以下是我尝试过的问题:
select account.ac,
account.name,
bread_sale.amount as BSAmount,
bread_sale.date as BSDate,
water_sale.amount as WSAmount,
water_sale.date as WSDate
from account left outer join bread_sale on account.ac = bread_sale.ac
left outer join water_sale on water_sale.ac = account.ac
order by account.ac
结果如下:
ac name BSAmount BSdate WSAmount WSdate
120 Tom 30 2018-01-03 75 2018-01-07
120 Tom 75 2018-01-04 75 2018-01-07
130 Jony 45 2018-01-05 30 2018-01-03
130 Jony 60 2018-01-05 75 2018-01-04
130 Jony 75 2018-01-05 60 2018-01-05
140 Jone 75 2018-01-04 45 2018-01-04
但我想得到这样的东西:
ac name BSAmount BSdate WSAmount WSdate
120 Tom 60 2018-01-03 75 2018-01-07
120 Tom 50 2018-01-04 0 2018-01-07
130 Jony 25 2018-01-05 30 2018-01-03
130 Jony 0 2018-01-05 75 2018-01-04
130 Jony 0 2018-01-05 60 2018-01-05
140 Jone 40 2018-01-04 45 2018-01-04
2018年1月7日汤姆没有卖水,但我得到了75英镑。有人帮帮我吗
2条答案
按热度按时间mgdq6dx11#
此查询将生成此结果。您的零将被正确的值替换。我希望你会需要这个。
wwodge7n2#
这是可以实现的,但杂乱无章,可能效率不高。面包水和帐户在ac上是有关系的。可以建立面包和水之间的最大行数,然后在行数上重新连接。换言之,面包和水是按位置连接的(即顺序行出现在表中),结果查询很糟糕,解析数据的频率比我个人所能接受的要高。
所以