2011-06-29 11 views
5

tengo esta consultareemplazar los valores nulos en el derecho combinación externa con una fila y no incluya nula anterior

select a.WeekNumber 
     ,a.filedate 
     ,a.customer 
     ,material 
     ,Quantity 
from zfmon zf right outer join zfmonTemp a 
on zf.customer = a.customer 
     and zf.filedate = a.filedate 
     and zf.material = 'AD215BY' 

Se devuelve la siguiente

WeekNumber FileDate     Customer Material Quantity 
1   2010-03-19 00:00:00.000 1008777 NULL  NULL 
2   2010-03-12 00:00:00.000 1008777 AD215XX 3 

Lo que yo quiero es que cuando el material es nula sustituir con el siguiente valor no nulo. En este caso, sería reemplazarlo con AD215XX

tanto, la salida se verá como

WeekNumber FileDate     Customer Material Quantity 
1   2010-03-19 00:00:00.000 1008777 AD215XX NULL 
2   2010-03-12 00:00:00.000 1008777 AD215XX 3 

¿Eso es posible hacerlo? ¿Puede alguien ayudar por favor?

Gracias, Eli

Respuesta

1
select a.WeekNumber 
     ,a.filedate 
     ,a.customer 
     ,isnull(material, (select top 1 material from zfmonTemp where weeknumber > zf.weeknumber and material is not null order by weeknumber)) material 
     ,Quantity 
from zfmon zf right outer join zfmonTemp a 
on zf.customer = a.customer 
     and zf.filedate = a.filedate 
     and zf.material = 'AD215BY' 
+1

probable que tenga que Lomit la subselección en caso de que haya más de 1 fila con un mayor WeekNumber? – StevieG

+0

@StevieG - Oups! Sí, tiene usted razón. – CristiC

+0

Gracias por la respuesta, pero esto no funcionó. weeknumber no es un campo en zfmon pero está en zfmonTemp. Aquí están las estructuras de la tabla: Zfmon tiene (fecha de archivo, cliente, material, cantidad) y ZfmonTemp tiene (fecha de archivo, cliente, número de semana) – Elias

0
set @material = 'AD215BY'; 
select a.WeekNumber 
     ,a.filedate 
     ,a.customer 
     ,coalesce(zf.material, @material) as Material 
     ,zf.Quantity 
from zfmon zf right outer join zfmonTemp a 
on zf.customer = a.customer 
     and zf.filedate = a.filedate 
     and zf.material = @material 
Cuestiones relacionadas