假设我有以下2个表
id| price id| qty
1 | 1000 1 | 0.5
2 | 1020 3 | 1
3 | 1040 6 | 1.5
4 | 1050
5 | 1070
6 | 1090
对于结果,我想使用最后一个可用的数量来计算每个值
id| price| qty | value (qty * price)
1 | 1000 | 0.5 | 500
2 | 1020 | 0.5 | 510
3 | 1040 | 1 | 1040
4 | 1050 | 1 | 1050
5 | 1070 | 1 | 1070
6 | 1090 | 1.5 | 1635
我找不到办法做到这一点。你能帮我吗 ?
答案 0 :(得分:2)
这只是使用join的问题,但是你不会得到你正在寻找的确切结果,因为你的第二个表中没有完整的值集。
SELECT id, price, qty, qty*price as value from qtys LEFT JOIN prices on id
INNER JOIN也可以。
SELECT id, price, qty, qty*price as value from qtys INNER JOIN prices on id
这会产生这样的结果:
id| price| qty | value (qty * price)
1 | 1000 | 0.5 | 500
3 | 1040 | 1 | 1040
6 | 1090 | 1.5 | 1635
无法连接ID 2,4和5.为了产生精确的输出,您必须为缺失项目的数量插值一些值。但是,对于某些缺失值,您似乎期望为0.5,对于另一个,您似乎期望为1.0。
SQL JOIN子句用于组合来自两个或多个表的行, 基于他们之间的共同领域。
最常见的连接类型是:SQL INNER JOIN(简单连接)。一个SQL INNER JOIN返回连接的多个表中的所有行 条件得到满足。
答案 1 :(得分:1)
您可以使用相关子查询来查找qty
值,然后查看聚合:
select id, price, qty, qty * price as value
from (select t1.*,
(select t2.qty
from t2
where t2.id <= t1.id
order by t2.id desc
limit 1
) as qty
from t1
) t;