我正在使用SQL Server 2008,需要检查每个订购产品的最低价格。 (2,11,15是supplerid
)
这是查询:
SELECT
od.IDPRODUCTO,
p.NOMBRE AS DescProd,
t.MIN_PRICE,
t.IDLIBRERIA,
FECHAACTUALIZACION
FROM
ORDERDETAILS od
JOIN
(SELECT
rpl.IDPRODUCTO,
MIN(PRECIO) AS min_price,
rpl.IDLIBRERIA AS idlibreria
FROM
RELPRODUCTOLIBRERIAS rpl
GROUP BY
rpl.IDPRODUCTO, rpl.IDLIBRERIA) t ON t.IDPRODUCTO = Od.IDPRODUCTO
JOIN
PRODUCTOS p ON (od.IDPRODUCTO = p.ID)
LEFT JOIN
EDITORIALES e ON (p.IDEDITORIAL = e.ID)
LEFT JOIN
ORDERSTATUSFOLLOWUP osf ON osf.ID = Od.IDSTATUSFOLLOWUP
WHERE
IDORDER = 98770
返回:
╔════════╦═══════════════════════╦════════╦════╦════════════╗
║ 153389 ║ CONCIENCIA- SOCIALES ║ 165.00 ║ 11 ║ 2014-06-27 ║
║ 153389 ║ CONCIENCIA - SOCIALES ║ 165.00 ║ 15 ║ 2014-06-27 ║
║ 136892 ║ CUENTEME DON SEGUNDO ║ 70.00 ║ 2 ║ 2014-06-27 ║
║ 136892 ║ CUENTEME DON SEGUNDO ║ 50.00 ║ 11 ║ 2014-06-27 ║
║ 136892 ║ CUENTEME DON SEGUNDO ║ 70.00 ║ 15 ║ 2014-06-27 ║
╚════════╩═══════════════════════╩════════╩════╩════════════╝
我需要这个结果:
╔════════╦═══════════════════════╦════════╦════╦════════════╗
║ 153389 ║ CONCIENCIA - SOCIALES ║ 165.00 ║ 11 ║ 2014-06-27 ║
║ 136892 ║ CUENTEME DON SEGUNDO ║ 50.00 ║ 11 ║ 2014-06-27 ║
╚════════╩═══════════════════════╩════════╩════╩════════════╝
需要改变什么?
由于
答案 0 :(得分:2)
尝试选择最低价格和供应商ID:
SELECT od.IDProducto ,
p.Nombre AS DescProd ,
MIN(t.min_price) ,
MIN(t.idlibreria) ,
FechaActualizacion
FROM orderdetails od
JOIN ( SELECT rpl.idproducto ,
MIN(precio) AS min_price ,
rpl.idlibreria AS idlibreria
FROM RelProductoLibrerias rpl
GROUP BY rpl.idproducto ,
rpl.idlibreria
) t ON t.idproducto = Od.IDProducto
JOIN Productos p ON ( od.IDProducto = p.ID )
LEFT JOIN Editoriales e ON ( p.IdEditorial = e.Id )
LEFT JOIN OrderStatusFollowUp osf ON osf.ID = Od.IDStatusFollowUp
WHERE IDOrder = 98770
GROUP BY od.IDProducto,
p.Nombre,
FechaActualizacion
答案 1 :(得分:0)
SELECT DISTINCT(od.IDProducto) , p.Nombre as DescProd,
t.min_price,t.idlibreria,FechaActualizacion
from orderdetails od
join (select rpl.idproducto,min(precio) as min_price,rpl.idlibreria as idlibreria
from RelProductoLibrerias rpl
group by rpl.idproducto ,rpl.idlibreria
) t
on t.idproducto = Od.IDProducto
JOIN Productos p ON (od.IDProducto = p.ID)
LEFT JOIN Editoriales e ON (p.IdEditorial=e.Id)
LEFT JOIN OrderStatusFollowUp osf on osf.ID = Od.IDStatusFollowUp WHERE IDOrder=98770
ORDER BY t.min_price