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

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
ask_skrn  
#1 Gönderildi : 2 Kasım 2016 Çarşamba 09:43:49(UTC)
ask_skrn

Sıralama: Newbie

Gruplar: Registered
Katılan: 2.11.2016(UTC)
Mesajlar: 1
Turkey
Konum: istanbul

Merhabalar
SQL de yeniyim.
videolarınızı izliyorum.
Çok teşekkürler eğitim videolarınız için, çok faydalı.

Elimde çalışan bir store procedure var.
bir sorgumu içine gömmek istiyorum ama hata veriyor.
Sorgu ayrı çalışıyor. procedurde ayrı olarak çalışıyor.
sorguyu neresine ekliyeceğim konusunda yardım edebilirmisiniz.

şimdiden teşekkür ederim


eklemek istediğim sorgu 1. yada 2. farketmez :
1-
( select stl_talep_eden+' / '+cpt.cari_per_adi+' '+cpt.cari_per_soyadi as [TALEP EDEN Kişi]
from dbo.SATINALMA_TALEPLERI x
left join dbo.CARI_PERSONEL_TANIMLARI cpt on x.stl_talep_eden = cpt.cari_per_kod)

2-
SELECT TOP 100 PERCENT
stl_talep_eden AS [msg_S_0501] /* PERSONEL KODU */ ,
dbo.fn_CarininIsminiBul(1,stl_talep_eden) AS [msg_S_0502] /* PERSONEL ADI */
FROM dbo.SATINALMA_TALEPLERI WITH (NOLOCK)



yukardaki sorgunun bir tanesini aşağıdaki store procedure 'e eklemek istiyorum:

-



USE [MikroDB_V15_MEKANIK_TEST]
GO
/****** Object: StoredProcedure [dbo].[sp_SiparisOperasyonlari] Script Date: 11/02/2016 09:33:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_SiparisOperasyonlari]
@siptip tinyint = 0,
@ilktar datetime = NULL,
@sontar datetime = NULL,
@acikkapali tinyint = 0, -- {0:Acik 1:Kapali 2:Hepsi }
@tamamlanmis tinyint = 0, -- {0:tamamlanmamis 1:tamamlanmis 2:hepsi }
@onayli tinyint = 0, -- {0:Onaysiz 1:Onayli 2:hepsi }
@DepoTipi tinyint = 0, -- {0:Genel 1:Siparis Depo 2:VerilenDepo }
@VerilenDepo integer = 0,
@TarihTipi tinyint = 0, -- {0: Teslim tarihi 1 : Siparis tarihi }
@Depolarstr nvarchar(MAX) = '',
@BirimNo tinyint = 1,
@carikodu nvarchar(25) = '',
@amac tinyint = 0,-- 0 : Sevk_veya_kapama, 1: Onaylama_veya_kapama, 2 : Rezervasyon, 3: Kapanmis_tamamlanmammislardan_siparis_olusturma,4 : Siparis_izleme
@durum tinyint = 0, -- 0:hepsi , 1 : acik siparislar , 2 : kapali siparisler
@dagitim tinyint = 0, -- 0 : kapatarak , 1 : oranlayarak, 2 : dagitim yapma
@yuvarlama tinyint = 1, -- 0:Yuvarlama yapma, 1:Yakına yuvarla, 2: Yukarı yuvarla, 3:Aşağı yuvarla
@Sadece_rezervasyonlu_siparisler_fl bit = 0
AS
BEGIN
SELECT TOP 100 PERCENT
[msg_S_0088] , -- KAYIT NO
[msg_S_0003] /* CİNSİ */ ,
SHD.*,
[msg_S_0084] /* BİRİMİ */ ,
[msg_S_0879] /* FİRMA UNVANI */ ,
[msg_S_0241] , -- TESLİM TARİHİ
[#msg_S_0240] , -- SİPARİŞ TARİHİ
[msg_S_0242] , -- SİP. CİNSİ
[#msg_S_1731] , -- SİP.CİNS NO
[msg_S_0243] , -- SERİ NO
[msg_S_0157] , -- SIRA NO
[#msg_S_0212] , -- SATIR NO
[#msg_S_0093] , -- BELGE NO
[msg_S_0200] , -- CARİ KODU
[msg_S_0201] , -- CARİ İSMİ
[#msg_S_0452] , -- TESLİM TÜRÜ
[msg_S_0355], -- DURUMU
[msg_S_0159] , -- DEPO
[#msg_S_0244] , -- SİPARİŞ MİKTAR
--dbo.fn_SiparisEslenenMiktar(0,sip_RECid_DBCno,sip_RECid_RECno) AS [#msg_S_0725] , -- EŞLEŞMİŞ MİKTAR
-- Bu süreyi neredeyse 2-3 katına çıkarıyor. Başka çözüm bulana kadar kapatıyorum
[#msg_S_0456] , -- TAMAMLANAN MİKTAR
[#msg_S_0246] , -- VAZGEÇİLEN MİKTAR
[msg_S_0463] , -- KALAN SİPARİŞ MİKTARI
[msg_S_0463] * sto_birim1_agirlik AS [#msg_S_0467] , -- KALAN MİKTAR AĞIRLIK (KG)
[msg_S_0463] * sto_birim1_en*sto_birim1_boy*sto_birim1_yukseklik/1000000000 [#msg_S_0468] , -- KALAN MİKTAR HACİM (M3)
[msg_S_2826], /* REZERVE EDİLEN MİKTAR*/
case
when (SO.[#KPT]=0) then [msg_S_0463] - [msg_S_2826]
else 0.0
end AS [#msg_S_2885] , -- REZERVASYON SONRASI KALAN SİPARİŞ MİKTARI
[#msg_S_0469] , -- STOK ELDEKİ MİKTAR
[msg_S_0470],-- HAREKET MİKTARI
[msg_S_0470]*sto_birim1_agirlik AS [#msg_S_2083] , -- HAREKET MİKTARI AĞIRLIK (KG)
[msg_S_0470]*sto_birim1_en*sto_birim1_boy*sto_birim1_yukseklik/1000000000 AS [#msg_S_2084] , -- HAREKET MİKTARI HACİM (M3)
[msg_S_0248] , -- BİRİM FİYAT
[msg_S_0249] , -- SİPARİŞ BRÜT TUTAR
[msg_S_1264], /* FİYAT LİSTE NO */
[msg_S_1265],/* FİYAT LİSTE AÇIKLAMASI */
[#msg_S_0250] , -- İSKONTO
[#msg_S_0251] , -- MASRAF
[msg_S_0252] , -- SİPARİŞ NET TUTAR
[msg_S_0253] , -- KALAN SİPARİŞ NET TUTAR
[msg_S_0254] , -- DÖVİZ
[#msg_S_0255] , -- ADRES NO
[#msg_S_0256] , -- ONAYLAYAN KULLANICI
[#msg_S_0257] , -- İTHALAT-İHRACAT KODU
[msg_S_0118] , -- SOR.MERK.KODU
[#msg_S_0119] , -- SOR.MERK.İSMİ
[msg_S_0116] , -- PROJE KODU
[#msg_S_0161] , -- PARTİ
[#msg_S_0162] , -- LOT
[#msg_S_0117] , -- PROJE ADI
[#msg_S_0260] , -- AÇIKLAMA 1
[#msg_S_0261] , -- AÇIKLAMA 2
[#msg_S_0471] , -- CARİ GRUP KODU
(SELECT crg_isim FROM dbo.CARI_HESAP_GRUPLARI WITH (NOLOCK) Where crg_kod = [#msg_S_0471]) AS [#msg_S_0472],
[#msg_S_0473] , -- BÖLGE KODU
(SELECT bol_ismi FROM dbo.CARI_HESAP_BOLGELERI WITH (NOLOCK) Where bol_kod = [#msg_S_0473]) AS [#msg_S_0202],

(select stl_talep_eden+' / '+cpt.cari_per_adi+' '+cpt.cari_per_soyadi as [TALEP EDEN Kişi]
from dbo.SATINALMA_TALEPLERI x
left join dbo.CARI_PERSONEL_TANIMLARI cpt on x.stl_talep_eden = cpt.cari_per_kod)

[#msg_S_0474] , -- CARİ SEKTÖR KODU
(SELECT sktr_ismi FROM dbo.STOK_SEKTORLERI WITH (NOLOCK) Where sktr_kod = [#msg_S_0474]) AS [#msg_S_0475],
[#msg_S_0098] , -- VADE TARİH
[#msg_S_0099] , -- VADE GÜN
[msg_S_0262], -- DURUM */
[#msg_S_1697], -- DURUM NO*/
[#msg_S_1745] /* TESLİM TÜRÜ ADI */ ,
[#msg_S_1129] /* SORUMLU KODU */,
[#msg_S_1130] /* SORUMLU KODU */ ,
[#msg_S_1042]/* ODEME PLAN ADI */,
[msg_S_0551] /* ÖDEME PLANI NUMARASI */ ,
[#msg_S_2760] /* KAPAMA NEDENİ KODU */ ,
[#msg_S_2761] /* KAPAMA NEDENİ İSMİ */ ,
[#msg_S_2762] /* KAPAMA NEDENİ AÇIKLAMA */,
[#msg_S_1735] /* İSKONTO YÜZDESİ 1 */ ,
[#msg_S_1736] /* İSKONTO YÜZDESİ 2 */ ,
[#msg_S_1737] /* İSKONTO YÜZDESİ 3 */ ,
[#msg_S_1738] /* İSKONTO YÜZDESİ 4 */ ,
[#msg_S_1739] /* İSKONTO YÜZDESİ 5 */ ,
[#msg_S_1740] /* İSKONTO YÜZDESİ 6 */ ,
[#msg_S_1741] /* MASRAF YÜZDESİ 1*/ ,
[#msg_S_1742] /* MASRAF YÜZDESİ 2*/ ,
[#msg_S_1743] /* MASRAF YÜZDESİ 3*/ ,
[#msg_S_1744] /* MASRAF YÜZDESİ 4*/ ,
[msg_S_1494] /* GEÇERLİLİK TARİHİ */ ,
[msg_S_4153] /* REZERVASYON MİKTARI */ ,
[msg_S_4154] /* REZERVASYONDAN TESLİM EDİLEN */
into #tmpSiparisOperasyonlari
FROM
(
select
*,
CASE
WHEN ([#KPT]=0) and
(@siptip=0) AND
(( [msg_S_0463] )>0) and
([#msg_S_0469] > 0) THEN
CASE
WHEN ([#msg_S_0469]<=([msg_S_0463])) THEN [#msg_S_0469]
ELSE [msg_S_0463]
END
WHEN ([#KPT]=0) and (@siptip=1) THEN [msg_S_0463]
ELSE CAST(0.0 as FLOAT)
END AS [msg_S_0470] -- HAREKET MİKTARI
from
dbo.fn_HamSiparisOperasyonlari ( @siptip,
@ilktar,
@sontar,
@acikkapali,
@tamamlanmis,
@onayli,
@DepoTipi,
@VerilenDepo,
@TarihTipi,
@Depolarstr,
@BirimNo,
@carikodu,
(case when @amac=2 then 1 else 0 end),
@Sadece_rezervasyonlu_siparisler_fl) HSO
WHERE ((@amac<>4) or ([#msg_S_1697]+1=@durum)or (@durum=0))
) SO
LEFT OUTER JOIN dbo.STOK_HIZMET_MASRAF_DEMIRBAS_DETAY_KOD_gizli SHD ON (SO.[msg_S_0001]=SHD.[msg_S_0078]) AND ([#msg_S_0158]=SHD.[#msg_S_0328])
LEFT OUTER JOIN dbo.STOKLAR ON (SO.[msg_S_0001]=dbo.STOKLAR.sto_kod)
if @dagitim<>2
begin
declare @stokkod nvarchar(25)
declare @eldeki float
declare @sipkalan float
declare @kalan float
declare @oran float
declare @kayitno integer
Declare Stok_Cursor CURSOR READ_ONLY FAST_FORWARD
FOR
SELECT
[msg_S_0078],
MIN (isnull([#msg_S_0469],0)),
SUM(isnull([msg_S_0463],0))
FROM #tmpSiparisOperasyonlari
GROUP BY [msg_S_0078]
HAVING (MIN(isnull([#msg_S_0469],0))>0) and (MIN(isnull([#msg_S_0469],0))<SUM(isnull([msg_S_0463],0))) --aksi halde dagitima gerek yok gelen rakamlar dogrudur.
OPEN Stok_Cursor
FETCH NEXT FROM Stok_Cursor INTO @stokkod,@eldeki,@sipkalan
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE #tmpSiparisOperasyonlari
SET msg_S_0470 = 0 where [msg_S_0078] = @stokkod
if @sipkalan>0
set @oran=@eldeki/ @sipkalan
else
set @oran=0
Declare Stok_Cursor2 CURSOR READ_ONLY FAST_FORWARD
FOR Select msg_S_0088,[msg_S_0463] FROM #tmpSiparisOperasyonlari WHERE [msg_S_0078]=@stokkod
OPEN Stok_Cursor2
FETCH NEXT FROM Stok_Cursor2 INTO @kayitno,@kalan
declare @dagitimmiktari float
WHILE @@FETCH_STATUS = 0 and (@eldeki>0)
BEGIN
set @dagitimmiktari=0
if (@kalan>0)
begin
if @dagitim=0 --kapatarak
begin
if @eldeki>@kalan
begin
set @dagitimmiktari=@kalan
set @eldeki=@eldeki-@kalan
end
else
begin
set @dagitimmiktari=@eldeki
set @eldeki=0
end
end
else --oranlayarak
begin
set @dagitimmiktari=@kalan*@oran
set @dagitimmiktari=case
when @yuvarlama=1 then round(@dagitimmiktari,0)
when @yuvarlama=2 then round(@dagitimmiktari+(0.5),0)
when @yuvarlama=3 then round(@dagitimmiktari-(0.5),0)
else @dagitimmiktari
end
end
end
UPDATE #tmpSiparisOperasyonlari
SET msg_S_0470 =@dagitimmiktari
WHERE msg_S_0088=@kayitno
FETCH NEXT FROM Stok_Cursor2 INTO @kayitno,@kalan
END
CLOSE Stok_Cursor2
DEALLOCATE Stok_Cursor2
FETCH NEXT FROM Stok_Cursor INTO @stokkod,@eldeki,@sipkalan
END
CLOSE Stok_Cursor
DEALLOCATE Stok_Cursor
end
select * from #tmpSiparisOperasyonlari
ORDER BY [msg_S_0241], [msg_S_0200], [msg_S_0243], [msg_S_0157], [#msg_S_0212]
END

mehmetzekikir  
#2 Gönderildi : 2 Kasım 2016 Çarşamba 09:57:16(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.
Originally Posted by: ask_skrn Go to Quoted Post
Merhabalar
SQL de yeniyim.
videolarınızı izliyorum.
Çok teşekkürler eğitim videolarınız için, çok faydalı.

Elimde çalışan bir store procedure var.
bir sorgumu içine gömmek istiyorum ama hata veriyor.
Sorgu ayrı çalışıyor. procedurde ayrı olarak çalışıyor.
sorguyu neresine ekliyeceğim konusunda yardım edebilirmisiniz.

şimdiden teşekkür ederim


eklemek istediğim sorgu 1. yada 2. farketmez :
1-
( select stl_talep_eden+' / '+cpt.cari_per_adi+' '+cpt.cari_per_soyadi as [TALEP EDEN Kişi]
from dbo.SATINALMA_TALEPLERI x
left join dbo.CARI_PERSONEL_TANIMLARI cpt on x.stl_talep_eden = cpt.cari_per_kod)

2-
SELECT TOP 100 PERCENT
stl_talep_eden AS [msg_S_0501] /* PERSONEL KODU */ ,
dbo.fn_CarininIsminiBul(1,stl_talep_eden) AS [msg_S_0502] /* PERSONEL ADI */
FROM dbo.SATINALMA_TALEPLERI WITH (NOLOCK)



yukardaki sorgunun bir tanesini aşağıdaki store procedure 'e eklemek istiyorum:

-



USE [MikroDB_V15_MEKANIK_TEST]
GO
/****** Object: StoredProcedure [dbo].[sp_SiparisOperasyonlari] Script Date: 11/02/2016 09:33:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_SiparisOperasyonlari]
@siptip tinyint = 0,
@ilktar datetime = NULL,
@sontar datetime = NULL,
@acikkapali tinyint = 0, -- {0:Acik 1:Kapali 2:Hepsi }
@tamamlanmis tinyint = 0, -- {0:tamamlanmamis 1:tamamlanmis 2:hepsi }
@onayli tinyint = 0, -- {0:Onaysiz 1:Onayli 2:hepsi }
@DepoTipi tinyint = 0, -- {0:Genel 1:Siparis Depo 2:VerilenDepo }
@VerilenDepo integer = 0,
@TarihTipi tinyint = 0, -- {0: Teslim tarihi 1 : Siparis tarihi }
@Depolarstr nvarchar(MAX) = '',
@BirimNo tinyint = 1,
@carikodu nvarchar(25) = '',
@amac tinyint = 0,-- 0 : Sevk_veya_kapama, 1: Onaylama_veya_kapama, 2 : Rezervasyon, 3: Kapanmis_tamamlanmammislardan_siparis_olusturma,4 : Siparis_izleme
@durum tinyint = 0, -- 0:hepsi , 1 : acik siparislar , 2 : kapali siparisler
@dagitim tinyint = 0, -- 0 : kapatarak , 1 : oranlayarak, 2 : dagitim yapma
@yuvarlama tinyint = 1, -- 0:Yuvarlama yapma, 1:Yakına yuvarla, 2: Yukarı yuvarla, 3:Aşağı yuvarla
@Sadece_rezervasyonlu_siparisler_fl bit = 0
AS
BEGIN
SELECT TOP 100 PERCENT
[msg_S_0088] , -- KAYIT NO
[msg_S_0003] /* CİNSİ */ ,
SHD.*,
[msg_S_0084] /* BİRİMİ */ ,
[msg_S_0879] /* FİRMA UNVANI */ ,
[msg_S_0241] , -- TESLİM TARİHİ
[#msg_S_0240] , -- SİPARİŞ TARİHİ
[msg_S_0242] , -- SİP. CİNSİ
[#msg_S_1731] , -- SİP.CİNS NO
[msg_S_0243] , -- SERİ NO
[msg_S_0157] , -- SIRA NO
[#msg_S_0212] , -- SATIR NO
[#msg_S_0093] , -- BELGE NO
[msg_S_0200] , -- CARİ KODU
[msg_S_0201] , -- CARİ İSMİ
[#msg_S_0452] , -- TESLİM TÜRÜ
[msg_S_0355], -- DURUMU
[msg_S_0159] , -- DEPO
[#msg_S_0244] , -- SİPARİŞ MİKTAR
--dbo.fn_SiparisEslenenMiktar(0,sip_RECid_DBCno,sip_RECid_RECno) AS [#msg_S_0725] , -- EŞLEŞMİŞ MİKTAR
-- Bu süreyi neredeyse 2-3 katına çıkarıyor. Başka çözüm bulana kadar kapatıyorum
[#msg_S_0456] , -- TAMAMLANAN MİKTAR
[#msg_S_0246] , -- VAZGEÇİLEN MİKTAR
[msg_S_0463] , -- KALAN SİPARİŞ MİKTARI
[msg_S_0463] * sto_birim1_agirlik AS [#msg_S_0467] , -- KALAN MİKTAR AĞIRLIK (KG)
[msg_S_0463] * sto_birim1_en*sto_birim1_boy*sto_birim1_yukseklik/1000000000 [#msg_S_0468] , -- KALAN MİKTAR HACİM (M3)
[msg_S_2826], /* REZERVE EDİLEN MİKTAR*/
case
when (SO.[#KPT]=0) then [msg_S_0463] - [msg_S_2826]
else 0.0
end AS [#msg_S_2885] , -- REZERVASYON SONRASI KALAN SİPARİŞ MİKTARI
[#msg_S_0469] , -- STOK ELDEKİ MİKTAR
[msg_S_0470],-- HAREKET MİKTARI
[msg_S_0470]*sto_birim1_agirlik AS [#msg_S_2083] , -- HAREKET MİKTARI AĞIRLIK (KG)
[msg_S_0470]*sto_birim1_en*sto_birim1_boy*sto_birim1_yukseklik/1000000000 AS [#msg_S_2084] , -- HAREKET MİKTARI HACİM (M3)
[msg_S_0248] , -- BİRİM FİYAT
[msg_S_0249] , -- SİPARİŞ BRÜT TUTAR
[msg_S_1264], /* FİYAT LİSTE NO */
[msg_S_1265],/* FİYAT LİSTE AÇIKLAMASI */
[#msg_S_0250] , -- İSKONTO
[#msg_S_0251] , -- MASRAF
[msg_S_0252] , -- SİPARİŞ NET TUTAR
[msg_S_0253] , -- KALAN SİPARİŞ NET TUTAR
[msg_S_0254] , -- DÖVİZ
[#msg_S_0255] , -- ADRES NO
[#msg_S_0256] , -- ONAYLAYAN KULLANICI
[#msg_S_0257] , -- İTHALAT-İHRACAT KODU
[msg_S_0118] , -- SOR.MERK.KODU
[#msg_S_0119] , -- SOR.MERK.İSMİ
[msg_S_0116] , -- PROJE KODU
[#msg_S_0161] , -- PARTİ
[#msg_S_0162] , -- LOT
[#msg_S_0117] , -- PROJE ADI
[#msg_S_0260] , -- AÇIKLAMA 1
[#msg_S_0261] , -- AÇIKLAMA 2
[#msg_S_0471] , -- CARİ GRUP KODU
(SELECT crg_isim FROM dbo.CARI_HESAP_GRUPLARI WITH (NOLOCK) Where crg_kod = [#msg_S_0471]) AS [#msg_S_0472],
[#msg_S_0473] , -- BÖLGE KODU
(SELECT bol_ismi FROM dbo.CARI_HESAP_BOLGELERI WITH (NOLOCK) Where bol_kod = [#msg_S_0473]) AS [#msg_S_0202],

(select stl_talep_eden+' / '+cpt.cari_per_adi+' '+cpt.cari_per_soyadi as [TALEP EDEN Kişi]
from dbo.SATINALMA_TALEPLERI x
left join dbo.CARI_PERSONEL_TANIMLARI cpt on x.stl_talep_eden = cpt.cari_per_kod)

[#msg_S_0474] , -- CARİ SEKTÖR KODU
(SELECT sktr_ismi FROM dbo.STOK_SEKTORLERI WITH (NOLOCK) Where sktr_kod = [#msg_S_0474]) AS [#msg_S_0475],
[#msg_S_0098] , -- VADE TARİH
[#msg_S_0099] , -- VADE GÜN
[msg_S_0262], -- DURUM */
[#msg_S_1697], -- DURUM NO*/
[#msg_S_1745] /* TESLİM TÜRÜ ADI */ ,
[#msg_S_1129] /* SORUMLU KODU */,
[#msg_S_1130] /* SORUMLU KODU */ ,
[#msg_S_1042]/* ODEME PLAN ADI */,
[msg_S_0551] /* ÖDEME PLANI NUMARASI */ ,
[#msg_S_2760] /* KAPAMA NEDENİ KODU */ ,
[#msg_S_2761] /* KAPAMA NEDENİ İSMİ */ ,
[#msg_S_2762] /* KAPAMA NEDENİ AÇIKLAMA */,
[#msg_S_1735] /* İSKONTO YÜZDESİ 1 */ ,
[#msg_S_1736] /* İSKONTO YÜZDESİ 2 */ ,
[#msg_S_1737] /* İSKONTO YÜZDESİ 3 */ ,
[#msg_S_1738] /* İSKONTO YÜZDESİ 4 */ ,
[#msg_S_1739] /* İSKONTO YÜZDESİ 5 */ ,
[#msg_S_1740] /* İSKONTO YÜZDESİ 6 */ ,
[#msg_S_1741] /* MASRAF YÜZDESİ 1*/ ,
[#msg_S_1742] /* MASRAF YÜZDESİ 2*/ ,
[#msg_S_1743] /* MASRAF YÜZDESİ 3*/ ,
[#msg_S_1744] /* MASRAF YÜZDESİ 4*/ ,
[msg_S_1494] /* GEÇERLİLİK TARİHİ */ ,
[msg_S_4153] /* REZERVASYON MİKTARI */ ,
[msg_S_4154] /* REZERVASYONDAN TESLİM EDİLEN */
into #tmpSiparisOperasyonlari
FROM
(
select
*,
CASE
WHEN ([#KPT]=0) and
(@siptip=0) AND
(( [msg_S_0463] )>0) and
([#msg_S_0469] > 0) THEN
CASE
WHEN ([#msg_S_0469]<=([msg_S_0463])) THEN [#msg_S_0469]
ELSE [msg_S_0463]
END
WHEN ([#KPT]=0) and (@siptip=1) THEN [msg_S_0463]
ELSE CAST(0.0 as FLOAT)
END AS [msg_S_0470] -- HAREKET MİKTARI
from
dbo.fn_HamSiparisOperasyonlari ( @siptip,
@ilktar,
@sontar,
@acikkapali,
@tamamlanmis,
@onayli,
@DepoTipi,
@VerilenDepo,
@TarihTipi,
@Depolarstr,
@BirimNo,
@carikodu,
(case when @amac=2 then 1 else 0 end),
@Sadece_rezervasyonlu_siparisler_fl) HSO
WHERE ((@amac<>4) or ([#msg_S_1697]+1=@durum)or (@durum=0))
) SO
LEFT OUTER JOIN dbo.STOK_HIZMET_MASRAF_DEMIRBAS_DETAY_KOD_gizli SHD ON (SO.[msg_S_0001]=SHD.[msg_S_0078]) AND ([#msg_S_0158]=SHD.[#msg_S_0328])
LEFT OUTER JOIN dbo.STOKLAR ON (SO.[msg_S_0001]=dbo.STOKLAR.sto_kod)
if @dagitim<>2
begin
declare @stokkod nvarchar(25)
declare @eldeki float
declare @sipkalan float
declare @kalan float
declare @oran float
declare @kayitno integer
Declare Stok_Cursor CURSOR READ_ONLY FAST_FORWARD
FOR
SELECT
[msg_S_0078],
MIN (isnull([#msg_S_0469],0)),
SUM(isnull([msg_S_0463],0))
FROM #tmpSiparisOperasyonlari
GROUP BY [msg_S_0078]
HAVING (MIN(isnull([#msg_S_0469],0))>0) and (MIN(isnull([#msg_S_0469],0))<SUM(isnull([msg_S_0463],0))) --aksi halde dagitima gerek yok gelen rakamlar dogrudur.
OPEN Stok_Cursor
FETCH NEXT FROM Stok_Cursor INTO @stokkod,@eldeki,@sipkalan
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE #tmpSiparisOperasyonlari
SET msg_S_0470 = 0 where [msg_S_0078] = @stokkod
if @sipkalan>0
set @oran=@eldeki/ @sipkalan
else
set @oran=0
Declare Stok_Cursor2 CURSOR READ_ONLY FAST_FORWARD
FOR Select msg_S_0088,[msg_S_0463] FROM #tmpSiparisOperasyonlari WHERE [msg_S_0078]=@stokkod
OPEN Stok_Cursor2
FETCH NEXT FROM Stok_Cursor2 INTO @kayitno,@kalan
declare @dagitimmiktari float
WHILE @@FETCH_STATUS = 0 and (@eldeki>0)
BEGIN
set @dagitimmiktari=0
if (@kalan>0)
begin
if @dagitim=0 --kapatarak
begin
if @eldeki>@kalan
begin
set @dagitimmiktari=@kalan
set @eldeki=@eldeki-@kalan
end
else
begin
set @dagitimmiktari=@eldeki
set @eldeki=0
end
end
else --oranlayarak
begin
set @dagitimmiktari=@kalan*@oran
set @dagitimmiktari=case
when @yuvarlama=1 then round(@dagitimmiktari,0)
when @yuvarlama=2 then round(@dagitimmiktari+(0.5),0)
when @yuvarlama=3 then round(@dagitimmiktari-(0.5),0)
else @dagitimmiktari
end
end
end
UPDATE #tmpSiparisOperasyonlari
SET msg_S_0470 =@dagitimmiktari
WHERE msg_S_0088=@kayitno
FETCH NEXT FROM Stok_Cursor2 INTO @kayitno,@kalan
END
CLOSE Stok_Cursor2
DEALLOCATE Stok_Cursor2
FETCH NEXT FROM Stok_Cursor INTO @stokkod,@eldeki,@sipkalan
END
CLOSE Stok_Cursor
DEALLOCATE Stok_Cursor
end
select * from #tmpSiparisOperasyonlari
ORDER BY [msg_S_0241], [msg_S_0200], [msg_S_0243], [msg_S_0157], [#msg_S_0212]
END



Merhabalar

Bir procedure un içine en fazla 1 tane sonuç döndüren select yazabilirsiniz,

Başka bir çözüm bulmanız gerekiyor, Size tavsiye olarak bu sorguyu ana sorguya join olarak yazmanız oradan istediğiniz kolonları seçin ,
tabi iki sorgu arasında bir ilişki olması gerekiyor
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...


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.