mysql - MYSQL - 通过查询从组中的最后一个 id 获取值
问题描述
SQL Fiddle中的完整示例 我有一个来自 3 个表的查询
SELECT MAX(s.id_stock), s.precio_in, s.codigo,
SUM(s.cantidad) - COALESCE(sv.suma_salidas,0) as cantidad,
x.status
FROM db1_stock s
LEFT JOIN
(SELECT COALESCE(sum(cant_ser),0) suma_salidas, codigo
FROM db1_servicios
GROUP BY codigo) sv USING (codigo)
LEFT JOIN db1_oc x
ON (s.oc_id = x.oc_id)
WHERE x.status = 'EN BODEGA'
GROUP BY s.codigo
ORDER BY x.fecha_oc DESC
表(db1_services 为空)
我希望得到相同的结果,但从最后一个开始id_stock
,不会丢失 SUM 和 group by codigo
;不是 的最大值precio_in
,只是最近的。谢谢 !!
小提琴
解决方案
要获得最后一个值precio_in
(我认为是与 关联的那个MAX(id_stock)
),您需要db1_stock
在派生表中进行聚合,然后JOIN
返回db1_stock
:
SELECT s.id_stock,
s.precio_in,
s.codigo,
a.cantidad - COALESCE(sv.suma_salidas,0) as cantidad,
x.status
FROM db1_stock s
JOIN (
SELECT codigo,
MAX(id_stock) AS id_stock,
SUM(cantidad) AS cantidad
FROM db1_stock
GROUP BY codigo
) a ON a.codigo = s.codigo AND a.id_stock = s.id_stock
LEFT JOIN (
SELECT COALESCE(SUM(cant_ser),0) AS suma_salidas, codigo
FROM db1_servicios
GROUP BY codigo
) sv ON sv.codigo = s.codigo
JOIN db1_oc x ON s.oc_id = x.oc_id
WHERE x.status = 'EN BODEGA'
ORDER BY x.fecha_oc DESC
输出:
id_stock precio_in codigo cantidad status
19 4000 PRUEBA 6 EN BODEGA
20 4200 PRUEBA2 1 EN BODEGA
推荐阅读
- android - 为什么 Crashlytics 报告有 ??? 作为标题
- flutter-test - Flutter 小部件测试 Finder 失败,因为小部件超出了渲染树的范围
- python - Pygame:为什么不会出现窗口?
- swift - 获取过去 7 天的开始和结束时间
- amazon-dynamodb - DynamoDB 查询嵌套属性以动态更改地图对象
- python - 我想用 scapy sendpfast 来丢包
- c++ - 最后两行发生了什么,我无法从 C++ 中的 struct 获取此语法
- r - 在R中找到没有封闭形式的积分方程的根
- python - 将矩阵变成表格
- powerbi - 每个客户的第一个订单