Creo que esta es la definitiva y tiene todo lo que quieres (si no es así, es muy muy parecido)
Código SQL:
Ver originalSELECT ID, id_proveedor, producto, precio, stock
FROM
(
(
SELECT ID, MIN(PRECIO) AS PRE
FROM TARIFAS
WHERE STOCK > 0
GROUP BY ID
)
UNION
(
SELECT ID, MIN(PRECIO) AS PRE
FROM TARIFAS
WHERE STOCK = 0
GROUP BY ID
)
) T1
INNER JOIN TARIFAS TAR ON
T1.ID = TAR.ID AND T1.PRE = TAR.PRECIO