si , si . acabo de reportar.
si, es correcta . y ademas bastante simple cuando las ves. lastima tener que molestar. muy agradecido por la aportacion. es relativamente sencilla , 😅
he intentado ir un poco mas alla , y mejorarla o mas bien complicarla. y he vuelto a ser incapaz de ubicar bien los case when para que funcione.
queria conseguir que si la fecha mas reciente tiene mas de quince dias " ... (a1.FechaLinea > DATE(CURRENT_DATE-15)) ..." solo coja las 2 ultimas fechas . o sea que en lugar de un TOP 3 , sea un TOP 2.
he probado con los CASE WHEN dentro del select y fuera cambiando la instruccion pero no consigo que funcione.
de todas formas , la solucion ofrecida es para mi un gran aporte y cubre casi la totalidad de casos de la consulta. muchas gracias.
tambien funciona... 😁 . y yo dale que te pego con los CASE. ...
voy a ir desarrollar un poco mas la consulta , a ver si discurro algo mas y no hace falta vuestra atencion. ( seguro que vuelvo , jaja)
vaya ... un placer y muy agradecido de me hayais atendido las consultas tan rapido. ... y tan eficaces.
p.d.
dejo la sentencia completa como ejemplo por si a alguien le sirve de modelo
v.0
SELECT a1.Articulo, a1.DescArticulo, AVG(a1.PrecioCoste)
FROM Comp.AlbaranLin a1
WHERE a1.FechaLinea in (SELECT TOP 3 a2.FechaLinea FROM Comp.AlbaranLin a2 WHERE a1.Articulo = a2.Articulo ORDER BY a2.FechaLinea DESC ) (*opcional *AND a1.Articulo = '337' AND a1.FechaLinea > DATE(CURRENT_DATE-15) *)
GROUP BY a1.Articulo order by a1.Articulo asc ;
v.1
SELECT a1.Articulo, a1.DescArticulo, AVG (a1.PrecioCoste)
FROM Comp.AlbaranLin a1
WHERE (a1.FechaLinea in (SELECT TOP 3 a2.FechaLinea FROM Comp.AlbaranLin a2 WHERE a1.Articulo = a2.Articulo ORDER BY a2.FechaLinea DESC ) AND a1.Articulo = '337' AND a1.FechaLinea >= DATE(CURRENT_DATE-15))
OR
(a1.FechaLinea in (SELECT TOP 2 a2.FechaLinea FROM Comp.AlbaranLin a2 WHERE a1.Articulo = a2.Articulo ORDER BY a2.FechaLinea DESC ) AND a1.Articulo = '337' AND a1.FechaLinea < DATE(CURRENT_DATE-15))
GROUP BY a1.Articulo order by a1.Articulo asc ;