Arkadaşlar ilk önce bir function hazırladım
fn_OdemeGunu
CREATE FUNCTION dbo.fn_OdemeGunu (@TypeNo as tinyint)
RETURNS varchar(55) AS
BEGIN
Declare @Type as varchar(55)
Set @Type=Case
When @TypeNo=4 Then 0
When @TypeNo=6 Then 120
When @TypeNo=3 Then 15
When @TypeNo=1 Then 30
When @TypeNo=2 Then 60
When @TypeNo=7 Then 75
When @TypeNo=5 Then 90
End
Return @Type
END
sonra ise aşağıdaki sorguyu inceleyin
SELECT TOP 100 PERCENT sip_RECno AS [İLK KAYIT NO], sip_stok_kod AS [STOK KODU], dbo.STOK.sto_isim AS [STOK İSMİ],
dbo.fn_TalepTemin(sip_tip) AS [TİPİ],dbo.fn_SiparisCins(sip_cins) AS [CİNSİ], sip_evrakno_seri AS [EVRAK SERİ],
sip_evrakno_sira AS [EVRAK SIRA], sip_tarih AS [ALINIŞ TARİHİ], sip_teslim_tarih AS [TES.TARİHİ],sip_miktar AS [MİKTAR], sip_tutar AS TUTAR,
dbo.fn_CarininIsminiBul(sip_tip,sip_musteri_kod) AS [MÜŞTERİ İSMİ],sip_opno AS [VADE],dbo.fn_OdemeGunu(sip_opno) AS [VADE2],
CASE
WHEN cast(sip_kapat_fl as smallint)>0 THEN 0
ELSE (sip_miktar - sip_teslim_miktar)
END AS [KALAN MİKTAR],
CASE
WHEN cast(sip_kapat_fl as smallint)>0 THEN 0
ELSE ((sip_miktar - sip_teslim_miktar) * (sip_tutar / sip_miktar))
END AS [KALAN TUTAR],
sip_musteri_kod AS [CARİ KODU],
(sip_teslim_tarih + dbo.fn_OdemeGunu(sip_opno)) AS [ÖDEME TARİHİ]
FROM dbo.SIPARIS WITH (NOLOCK)
INNER JOIN dbo.STOK ON dbo.SIPARIS.sip_stok_kod = dbo.STOK.sto_kod
WHERE ((sip_miktar - sip_teslim_miktar) > 0) and (sip_kapat_fl = 0) and
(sip_cagrilabilir_fl=1)
-- * şimdilik gerek yok and (sip_tip=0)
ORDER BY sip_teslim_tarih, sip_tarih, sip_evrakno_seri, sip_evrakno_sira
sorum şu kırmızı ile işaretli alanda toplam alamıyorum. Sanırım tarih ile functiondan gelen değer arasında tip uyumsuzluğu var. istediğim işlem için örnek : 13.06.2006 + 30 = 13.07.2006 gibi bir sonuç istiyorum. Yardım lütfen.
fn_OdemeGunu
CREATE FUNCTION dbo.fn_OdemeGunu (@TypeNo as tinyint)
RETURNS varchar(55) AS
BEGIN
Declare @Type as varchar(55)
Set @Type=Case
When @TypeNo=4 Then 0
When @TypeNo=6 Then 120
When @TypeNo=3 Then 15
When @TypeNo=1 Then 30
When @TypeNo=2 Then 60
When @TypeNo=7 Then 75
When @TypeNo=5 Then 90
End
Return @Type
END
sonra ise aşağıdaki sorguyu inceleyin
SELECT TOP 100 PERCENT sip_RECno AS [İLK KAYIT NO], sip_stok_kod AS [STOK KODU], dbo.STOK.sto_isim AS [STOK İSMİ],
dbo.fn_TalepTemin(sip_tip) AS [TİPİ],dbo.fn_SiparisCins(sip_cins) AS [CİNSİ], sip_evrakno_seri AS [EVRAK SERİ],
sip_evrakno_sira AS [EVRAK SIRA], sip_tarih AS [ALINIŞ TARİHİ], sip_teslim_tarih AS [TES.TARİHİ],sip_miktar AS [MİKTAR], sip_tutar AS TUTAR,
dbo.fn_CarininIsminiBul(sip_tip,sip_musteri_kod) AS [MÜŞTERİ İSMİ],sip_opno AS [VADE],dbo.fn_OdemeGunu(sip_opno) AS [VADE2],
CASE
WHEN cast(sip_kapat_fl as smallint)>0 THEN 0
ELSE (sip_miktar - sip_teslim_miktar)
END AS [KALAN MİKTAR],
CASE
WHEN cast(sip_kapat_fl as smallint)>0 THEN 0
ELSE ((sip_miktar - sip_teslim_miktar) * (sip_tutar / sip_miktar))
END AS [KALAN TUTAR],
sip_musteri_kod AS [CARİ KODU],
(sip_teslim_tarih + dbo.fn_OdemeGunu(sip_opno)) AS [ÖDEME TARİHİ]
FROM dbo.SIPARIS WITH (NOLOCK)
INNER JOIN dbo.STOK ON dbo.SIPARIS.sip_stok_kod = dbo.STOK.sto_kod
WHERE ((sip_miktar - sip_teslim_miktar) > 0) and (sip_kapat_fl = 0) and
(sip_cagrilabilir_fl=1)
-- * şimdilik gerek yok and (sip_tip=0)
ORDER BY sip_teslim_tarih, sip_tarih, sip_evrakno_seri, sip_evrakno_sira
sorum şu kırmızı ile işaretli alanda toplam alamıyorum. Sanırım tarih ile functiondan gelen değer arasında tip uyumsuzluğu var. istediğim işlem için örnek : 13.06.2006 + 30 = 13.07.2006 gibi bir sonuç istiyorum. Yardım lütfen.