2011-06-29 19 views
5

Ben bu sorgu O döndürürbir önceki boş eşleşmedi satırla katılmak sağ dış null değerleri değiştirin

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' 

İstediğim malzeme yerine null olduğunda içindir

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 

aşağıdaki bir sonraki boş değerle değil. Bu durumda

nedenle çıkış

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 

gibi görünecek AD215XX

ile değiştirin edeceğini yapmak mümkün mü? Birisi yardım edebilir mi lütfen.

sayesinde Eli

cevap

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

Muhtemelen daha büyük weeknumber ile 1'den fazla satır olduğu durumda Alt Seç'i Lomit gerekir? – StevieG

+0

@StevieG - Oups! Evet haklısın. – CristiC

+0

Yanıt için teşekkürler, ancak bu çalışmadı. weeknumber, zfmon'da bir alan değil, zfmonTemp'de. İşte tablo yapıları: Zfmon (dosya, müşteri, malzeme, miktar) ve ZfmonTemp'in (dosya, müşteri, hafta sayısı) – 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 
İlgili konular