logo
Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
emrekenan  
#1 Gönderildi : 7 Ekim 2015 Çarşamba 14:09:57(UTC)
emrekenan

Sıralama: Newbie

Gruplar: Registered
Katılan: 7.10.2015(UTC)
Mesajlar: 2
Turkey
Konum: İSTANBUL

Merhaba,
Bir sql sorgusu hazırlamam gerekiyor. Bu sql Sorgusu MRP raporlarında kullanılacak. çok uğraştım fakat bu sorguyu Cursor mü, UDF mi Sp ile mi yapmam gerektiğine karar veremedim. Yapmak istediğim sorgu için aşağıda bir örnek hazırladım.

xx nolu sipariş için 2 adet y mamülünden sipariş edildi.
zz nolu sipariş için 1 adet w mamülünden sipariş edildi.
qq nolu sipariş için 1 adet y mamülünden sipariş edilid.

yukarıdaki mamüllerin ürün ağaçları patlatıldığında altlarında yarı mamüller vardır. Muhtemel olarakta aynı yarı mamülleri kullanıyorlardır.

Kod:



declare @SIPDAG Table (SIRKOD INT,SIPARIS INT,SIRANO INT,STOKKOD VARCHAR(20) ,TIP VARCHAR(1) , MIKTAR DECIMAL(18,6) ,SEVKMIK DECIMAL(18,6) ,ACIKKAPALI VARCHAR(1)   ) 

INSERT INTO @SIPDAG values  (1,27041,1,'6 111 043 3011','L',2,0,'A')
INSERT INTO @SIPDAG values  (1,27042,1,'6 111 042 3001','L',1,0,'A')
INSERT INTO @SIPDAG values  (1,27043,1,'6 111 043 3011','L',1,0,'A')


declare @SIPMALZ Table (SIRKOD INT,SIPARIS INT,SIRANO INT,STOKKOD VARCHAR(20) ,OPERKOD VARCHAR(12),  MALZEME VARCHAR(20) , TIP VARCHAR(1) , MIKTAR DECIMAL(18,6)    ) 
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'6 111 043 3011' , 'SV01','6 111 043 3010' , 'L' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'6 111 043 3011' , 'SV01','4 000 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'6 111 043 3011' , 'SV01','3 000 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'6 111 043 3010' , 'BM01','5 811 003 0001' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'6 111 043 3010' , 'BM01','2 001 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'6 111 043 3010' , 'BM01','1 001 082 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'6 111 043 3010' , 'BM02','5 106 445 0001' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'6 111 043 3010' , 'BM02','1 001 082 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'5 811 003 0001' , 'BM10','2 116 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'5 811 003 0001' , 'BM10','1 080 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'5 106 445 0001' , 'BM15','1 001 082 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'5 106 445 0001' , 'BM15','5 100 001 0010' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27041,1,'5 100 001 0010' , 'BM16','1 005 080 0001' , 'M' , 1 )

INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'6 111 042 3001' , 'SV01','6 111 042 3000' , 'L' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'6 111 042 3001' , 'SV01','4 000 009 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'6 111 042 3001' , 'SV01','3 000 009 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'6 111 042 3000' , 'BM01','5 811 003 0001' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'6 111 042 3000' , 'BM01','2 001 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'6 111 042 3000' , 'BM01','1 001 081 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'6 111 042 3000' , 'BM02','5 106 444 0001' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'6 111 042 3000' , 'BM02','1 001 082 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'5 811 003 0001' , 'BM10','2 116 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'5 811 003 0001' , 'BM10','1 080 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'5 106 445 0001' , 'BM15','1 001 082 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'5 106 445 0001' , 'BM15','5 100 001 0010' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27042,1,'5 100 001 0010' , 'BM16','1 005 080 0001' , 'M' , 1 )

INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'6 111 043 3011' , 'SV01','6 111 043 3010' , 'L' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'6 111 043 3011' , 'SV01','4 000 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'6 111 043 3011' , 'SV01','3 000 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'6 111 043 3010' , 'BM01','5 811 003 0001' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'6 111 043 3010' , 'BM01','2 001 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'6 111 043 3010' , 'BM01','1 001 082 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'6 111 043 3010' , 'BM02','5 106 445 0001' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'6 111 043 3010' , 'BM02','1 001 082 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'5 811 003 0001' , 'BM10','2 116 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'5 811 003 0001' , 'BM10','1 080 010 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'5 106 445 0001' , 'BM15','1 001 082 0001' , 'M' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'5 106 445 0001' , 'BM15','5 100 001 0010' , 'Y' , 1 )
INSERT INTO @SIPMALZ VALUES (1 , 27043,1,'5 100 001 0010' , 'BM16','1 005 080 0001' , 'M' , 1 )

DECLARE @TMP_UAMBARMEV TABLE (SIRKOD INT,STOKKOD VARCHAR(20),MEVCUT DECIMAL(18,3)) 

INSERT INTO @TMP_UAMBARMEV VALUES('1','6 111 043 3011',1) 
INSERT INTO @TMP_UAMBARMEV VALUES('1','5 811 003 3001',1) 
INSERT INTO @TMP_UAMBARMEV VALUES('1','6 111 451 0001',1) 
INSERT INTO @TMP_UAMBARMEV VALUES('1','1 005 080 0001',2) 
INSERT INTO @TMP_UAMBARMEV VALUES('1','6 111 043 3011',2) 
INSERT INTO @TMP_UAMBARMEV VALUES('1','5 106 445 0001',2) 

;WITH CatCTE(SIRKOD,SIPARIS , SIRANO, STOKKOD , OPERKOD,YARIMAMUL , TIP ,SIPMIK ,SEVİYE) 
AS 
(SELECT    SIPDAG.SIRKOD,SIPDAG.SIPARIS,SIPDAG.SIRANO,SIPDAG.STOKKOD ,CONVERT(VARCHAR(12), ''), SIPDAG.STOKKOD , SIPDAG.TIP,CONVERT (DECIMAL(18,6), SIPDAG.MIKTAR-SIPDAG.SEVKMIK) AS SIPMIK, 0 SEVİYE
		FROM @SIPDAG SIPDAG
		WHERE SIPDAG.SIRKOD=1 AND  SIPDAG.ACIKKAPALI='A'  
	
	  	UNION ALL
		SELECT  SIPMALZ_CTE.SIRKOD,CTE.SIPARIS,CTE.SIRANO, SIPMALZ_CTE.stokkod,SIPMALZ_CTE.OPERKOD,SIPMALZ_CTE.malzeme, SIPMALZ_CTE.TIP,	 SIPMALZ_CTE.MIKTAR  , 		CTE.SEVİYE+1
		FROM @SIPMALZ SIPMALZ_CTE
		JOIN CatCTE as CTE ON SIPMALZ_CTE.SIRKOD=CTE.SIRKOD and SIPMALZ_CTE.SIPARIS=CTE.SIPARIS AND SIPMALZ_CTE.SIRANO=CTE.SIRANO  AND  SIPMALZ_CTE.STOKKOD = CTE.YARIMAMUL   
		)
select * from catcte  
ORDER BY YARIMAMUL


Yukarıdaki sorgu ile ürün ağaclarını ve altındaki malzemeleri buluyorum. Tipi L ve Y olanlar satırlar daki yarımamülden mevcudu nasıl düşeceğimi bulamadım. Not Stok Mevcudunda iki adet '6 111 043 3011' mamülünün yarı mamülünden var diyelim ki. bu durumda benim ihtiyacım aşağıdaki gibi olmalı


6 111 043 3011 mamülünün altındaki '5 811 003 0001' yarı mamülünden 4 adet sipariş ihtiyacı var ambar da da 2 adet var ise bu durumda bu yarı mamülün altındaki malzemelerden 2 şer adetlik ihtiyaç çıkmalı.


yukarıdaki sorgudan aşağıdaki listesi almak istiyorum. Yardımcı olursanız sevinirim.

Malzeme ihtiyaç

Malzeme Kodu ihtiyacı
Tipi 'm' olan stokların listesi Toplam siparişlerdeki ihtiyaç
mehmetzekikir  
#2 Gönderildi : 7 Ekim 2015 Çarşamba 14:41:50(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
merhabalar birazdaha açarmısınınız calıştırdım ama bir birini tekrar eden kayıtlar çıkıyor
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...
emrekenan  
#3 Gönderildi : 7 Ekim 2015 Çarşamba 19:43:14(UTC)
emrekenan

Sıralama: Newbie

Gruplar: Registered
Katılan: 7.10.2015(UTC)
Mesajlar: 2
Turkey
Konum: İSTANBUL

Merhaba,
İlginiz için teşekkür ederim.

Tip kısmında L ve Y yazan satırlar yarımamül altlarında başka malzemeler var. Tip kısmında M yazanlar ise malzeme altında bir ürün ağacı yok. her yarı mamül ve mamülün ne kadar talep edildiği geçici tabloya atıldı. Benim istediğim ihtiyacı bulunan mamülleri tmpmevcut tablosundaki mevcuduna göre alt ürün ağaçları ile çarparak malzeme ihtiyacını bulmak.

yani recursive fonksiyondan dönen değerlere baktığımızda stokkodu ve yarımamülü eşit olan 0 seviyesi benim ana mamülüm.

ana mamül-@mevcut --> ürün ağacı
Malzemeler
----->yarımamül ürün ağacı -@mevcut
Malzemeler
---------->yarı mamül altındaki yarımamülün ürün ağacı - @mevcut
malzemeler

kendini tekrar eden satırlar farklı siparişlerin ürün ağacı hepsini ayrı ayrı hesaplayıp bir tabloya ekleyip sonra toplarsak sroun çözülecek ve sanırım bunun için cursor kullanmaktan başka çare de yok.


Bu konudaki kullanıcılar
Guest
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.