实施例
table1 被视为购买
barcode articleno Description size
0101010 500845-400 nike shoes 7
10125 500845-400 nikeshoes 8
0101010 500845-400 nike shoes 7
0101010 500845-400 nike shoes 7
1254 125456-700 nikeshoes 12
表2 被视为转移库存
barcode articleno Description size
0101010 500845-400 nike shoes 7
10125 500845-400 nikeshoes 8
输出: balace股票
barcode articleno Description size
0101010 500845-400 nike shoes 7
0101010 500845-400 nike shoes 7
1254 125456-700 nikeshoes 12
答案 0 :(得分:0)
有一种方法可以做到这一点。我们的想法是从给定条形码/大小组合的第一个表中删除n
行(我假设这是行的唯一标识符)。 n
的值是第二个表中的行数。
以下查询通过删除基于n
的第一个id
行来完成此操作。它过滤掉前面ID数小于count的行:
select p.*
from purchasing p left outer join
(select barcode, size, count(*) as cnt
from transfers t
group by barcode, size
) bc
on p.barcode = bc.barcode and p.size = bc.size
where coalesce(cnt, 0) < (select count(*)
from purchasing p2
where p2.barcode = p.barcode and
p2.size = p.size and
p2.id <= p.id
);