有人可以帮我解决这个问题吗?
这是我的表结构:
rec_id product_id quantity quantity_in quantity_out balance stock_date status 1 2 342 NULL 17 325 2009-10-23 1 2 2 325 NULL 124 201 2009-10-23 1 3 1 156 NULL 45 111 2009-10-23 1 4 2 201 NULL 200 1 2009-10-23 1 5 2 1 NULL 1 0 2009-10-23 1 6 1 111 NULL 35 76 2009-10-23 1
我想要的只是针对特定产品的最后一笔交易:此表中的product_id
,quantity
,quantity_out
和balance
。
例如,产品2(ids 1& 2)完成了2次交易:
product_id
2的最终余额为0 - >存储在rec_id中5
product_id
1的最终余额为76 - >存储在rec_id 6中
最终结果/输出应如下所示:
recid productid quantity quantityin quantityout balance stock_date status 5 2 1 NULL 1 0 2009-10-23 1 6 1 111 NULL 35 76 2009-10-23 1
由于
答案 0 :(得分:0)
您可以找到每种产品的最新记录,如:
select max(rec_id) as MaxRec
from YourTable
group by product_id
使用子查询,您可以检索其产品的最新行:
select *
from YourTable
where rec_id in (
select max(rec_id) as MaxRec
from YourTable
group by product_id
)
答案 1 :(得分:0)
这是一个没有子查询的查询:
SELECT main.*
FROM YourTable main
LEFT JOIN YourTable newer
ON newer.product_id = main.product_id AND newer.rec_id > main.rec_id
WHERE newer.rec_id IS NULL;
您可以根据需要调整字段列表 - 确保从main中选择字段,而不是更新,这应该全部为空。