Sıralama: Newbie
Gruplar: Registered
Katılan: 7.10.2015(UTC) Mesajlar: 2 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ç
|