Forum
herkese kolay gelsin konu başlıgını nasıl anlatacagımı bile bulamadım kusuruma bakmayın .
okadar karışık bir şey istiyecegim ki ben bile nasıl anlatacagımı bulamadım daha 🙂
bir tablom var isimleri örnekdir italyanca oldugundan böyle yazıyorum
tablo1
alanlar
alan1 alan2
alan1 alan2
1060 1061
1061 1069
1069 1075
açıklaması alan1 eski numara alan2 yeni numara alan1 de esi numara yı aratıyorum arattıgımda alan2 yi ekrana yazdırıyorum 1060 numaası 1061 olmuş ama 1061 de değişim görmüş 1069 1069 da 1075 olmuş bu şekilde yürümesi lazım alan2 deki degeri aldı alan1 de aynısı yoksa duracak varsa devam edip duracak karışık biraz
Merhaba,
Sorununuzu daha açık bir şekilde dile getirebilir misiniz?Çünkü,yazdıklarınızdan bir anlam çıkarmak gerçekten çok zor.Örneğin bize tablo yapısının barsa resmini ve ya daha açık şekilde içindeki bilgilerden örnek bir görüntüyü ve de ek olarak SQL sorgu sonucundan nasıl bir sonuç istiyorsanız onunda bir örnek tablo gösterim şeklini atmayı unutmayınız.
Saygılarımla,
resim de kırmızı alan alan1 eski no diger alan alan2 yeni no
örnek where alan1=1060 aradık
alan2 de deger varsa alan1=alan2
tekrar alan2 de deger varsa alan1=alan2 yoksa döngü duracak
dedigim gibi çok karışık anlatmakta bile zorlanıyorum derdimi :=)
şimdiden tşkler..
not : alan3 diye bir alan daha var onu yazmayı unutmuşum resimdede görünüyor .
alan3 içeriği S ide değişmiş * ise bu son numara demek
yani şöyle anlatayım
where alan1=1060 iff veya case when veya başka bilyolla alan3=s ise alan1=alan2 * ise döngü bitecek veya sonlanacak
Turgay hocam bana gönderdi bende paylaşıyorum
create table #temp(alan1 int, alan2 int, skipx varchar(1), lastnumber varchar(1), oto int identity(1,1))
insert into #temp values (1060,1061,'','')
insert into #temp values (1000,1001,'','')
insert into #temp values (1061,1068,'','')
insert into #temp values (1001,1080,'','')
insert into #temp values (1002,1015,'','')
insert into #temp values (1015,1025,'','')
insert into #temp values (1080,1180,'','')
insert into #temp values (1068,1072,'','')
declare @i int, @max int, @TF bit
declare @alan1 int, @alan2 int, @skipx varchar(1)
set @TF=0
select @i=min(oto),@max=MAX(oto) from #temp
while @i<=@max begin
select @alan1=alan1,@alan2=alan2,@skipx=skipx from #temp where oto=@i
if @skipx<>'*' begin
set @TF=0
while @TF=0 begin
if exists(select * from #temp where alan1=@alan2)
select @alan1=alan1,@alan2=alan2 from #temp where alan1=@alan2
else begin
update #temp set lastnumber='*' where alan1=@alan1
set @TF=1
end
end
end
set @i=@i+1
end
select alan2 from #temp where lastnumber='*'
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
hocam öncelikle çok teşekkürler.
sql tecrubem pek yok böyle bir sorgu beklemiyordum bile :=)
2 şeye kafam takıldı ben örnek 1060 ı aramak istedigimde nereye yazacagım. birde bu sorgu bir tek son numarayı veriyor tablodaki resim deki gibi verilebilirmi şimdiden teşekkürler....
özür dilerim düzeltme ...
1015 1025 * 6
1080 1180 * 7
1068 1072 * 8
bu şekilde çıktı veriyor tabloda
1060 1061
1061 1068
1068 1072 gibi gösterme şansı varmıdır yani her değiştiği numarayıda görmem gerekiyor tabloda mümkünmü hocam ?
yardımcı olablirseniz sevinirim. kolay gelsin şimdiden tekrar teşekkürler..
ben bunu çok doğru bulmuyorum, siz bir konuyu biliyor olmalısınız, takıldığınız yerde yardım istemelisiniz. Eğer biz bu şekilde yardıma devam edersek bu postu örnek alarak herkes script yazmamızı ister ki bu işin sonu yok. Eğitim almanızı tavsiye ederim.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
hocam beni anlamadı yada ben anlatamadım.
bu aşagıdaki kodlarla ben bir liste alıyorum bu liste bana parça numaraları veriyor fakat bizim işte parça no ları sürekli değişmekte bu sebeple bu alana birde bu parçaya muadilli var veya bu parca noları da olur demem lazımm bunun için de dedigim bahsettiğim kod bana çaok lazım onu yapamadım dedim hocamın bana yolladıgı kodları bu yara entegre edemedim. aşagıda ki
assoc_tavole_parts.PART_NUMBER alanından gelen bütün numaraları
esauriti_sostituiti.PN_SOSTITUITO bu alanda arayacak yoksa burda aynısı ekrana assoc_tavole_parts.PART_NUMBER gelecek
varsa aynısı esauriti_sostituiti.TP_SOST_SOSTITUENTE alanına bakacak s ise
esauriti_sostituiti.PN_SOSTITUENTE bu alandaki numarayı esauriti_sostituiti.PN_SOSTITUITO içinde tekrar arayacak varsa tekrar lıyacak ve listemi verecek
esauriti_sostituiti.TP_SOST_SOSTITUENTE * ise durduracak işlemi
umarım bu sefer anlatabilmişimdir. şimdiden teşekkürler.
CASE WHEN assoc_tavole_parts.FL_ESA_SOS ='1'
AND esauriti_sostituiti.PN_SOSTITUITO = assoc_tavole_parts.PART_NUMBER
OR esauriti_sostituiti.TP_SOST_SOSTITUENTE ='S' or esauriti_sostituiti.PN_SOSTITUITO = esauriti_sostituiti.PN_SOSTITUENTE
AND esauriti_sostituiti.PN_SOSTITUENTE = esauriti_sostituiti.PN_SOSTITUITO
THEN esauriti_sostituiti.PN_SOSTITUENTE
ELSE assoc_tavole_parts.PART_NUMBER END AS YENIVEESKINO , bu şekilde bir şey denedim olmadı sadece bir kere değişmiş noları gösteriyor ben bütün değişmş nolarını istiyorum
1060 1061 oldu 1061 1068 oldu 1068 1075 oldu gibi
SELECT
assoc_tavole_parts.NR_ITEM,
assoc_tavole_parts.PN_QTA,
assoc_tavole_parts.PART_NUMBER,
CASE WHEN hafif.FIYATI >= 0 THEN hafif.FIYATI ELSE '-' END AS FIYATI,
CASE WHEN hafif.TANIM >= 0 THEN hafif.TANIM ELSE '-' END AS TANIM
FROM an_telai
INNER JOIN vp ON vp.PV_CODE = an_telai.PV_CODE
INNER JOIN scheda_tecnica_vcb ON scheda_tecnica_vcb.CBV_CODE = vp.CBV_CODE
INNER JOIN vp_opt_pacc ON vp_opt_pacc.CBV_CODE = scheda_tecnica_vcb.CBV_CODE AND vp_opt_pacc.OPT_TIPO <> '*'
INNER JOIN vcb_tavole_pacc ON vcb_tavole_pacc.CBV_CODE = vp_opt_pacc.CBV_CODE AND vcb_tavole_pacc.OPT_TIPO <> '*'
INNER JOIN an_tavole ON an_tavole.TONUMBER = vcb_tavole_pacc.TONUMBER
INNER JOIN tonumber ON tonumber.TONUMBER = an_tavole.TONUMBER
LEFT JOIN assoc_tavole_parts ON assoc_tavole_parts.COD_TAVOLA_GRAFICA = an_tavole.COD_TAVOLA_GRAFICA
LEFT JOIN esauriti_sostituiti ON esauriti_sostituiti.PN_SOSTITUITO = assoc_tavole_parts.PART_NUMBER
LEFT JOIN hafif on hafif.PARCA_NO = LTRIM(assoc_tavole_parts.PART_NUMBER)
WHERE an_telai.TELAIO = 'zcfc3572005481899'
AND vp_opt_pacc.PV_CODE = vp.PV_CODE
AND vcb_tavole_pacc.CBV_CODE = vp_opt_pacc.CBV_CODE
AND vcb_tavole_pacc.CODICE_OPT = vp_opt_pacc.CODICE_OPT
AND scheda_tecnica_vcb.FL_PRP = an_tavole.FL_TAVOLA_MADRE
and an_tavole.COD_TAVOLA_GRAFICA = vcb_tavole_pacc.COD_TAVOLA_GRAFICA
AND tonumber.CLASSE = '50'
AND tonumber.GRUPPO = '01'
AND tonumber.SUBGRP = '08'
AND assoc_tavole_parts.COD_TAVOLA_GRAFICA = '452'
ORDER BY assoc_tavole_parts.NR_ITEM ASC