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 ;

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.

al final acabo por responderme yo mismo...  son las COMILLLAS

SAMPLES>>  << entering multiline statement mode >>
        1>>UPDATE Cinema.Film SET Description = 'D1' WHERE ID = 1
        2>>GO
1.      UPDATE Cinema.Film SET Description = 'D1' WHERE ID = 1
 
1 Row Affected
statement prepare time(s)/globals/lines/disk: 0.0144s/2605/41887/0ms
          execute time(s)/globals/lines/disk: 0.0004s/24/246/0ms
                          cached query class: %sqlcq.SAMPLES.cls25
---------------------------------------------------------------------------

por lo tanto,  la parte de edicion del sql y ejecucion creo que esta resuelta. el tema es, puedo lanzar desde el shell la ejecucion de un archivo que contenga el SQL , o debo hacer un script que ejecute linea por linea las instrucciones sql que tengo en txt ????

muchas gracias por la ayuda pero sigo con error:

puede ser que sea un tema de comillas o algo asi?

SAMPLES>>  << entering multiline statement mode >>
        1>>UPDATE Cinema.Film SET "Description" = 'D1' WHERE "ID" = 1
        2>>UPDATE Cinema.Film SET "Description" = 'D2' WHERE "ID" = 2
        3>>UPDATE Cinema.Film SET "Description" = 'D3' WHERE "ID" = 3
        4>>GO
 
ERROR #5540: SQLCODE: Mensaje -25:  Entrada (UPDATE) encontrada al finalizar la consulta ^ UPDATE Cinema . Film SET "Description" = ? WHERE "ID" = ? UPDATE
SAMPLES>>