Sorguda Problem

ErkanA

Banned
Katılım
5 Aralık 2005
Mesajlar
47
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.
 
Katılım
7 Temmuz 2004
Mesajlar
327
Excel Vers. ve Dili
office xp pro türkçe
Sayın ErkanA,
sql sorgulama dilini ve yapısını tam bilemiyorum ama vba da tarihlere gün,ay,yıl eklemek için dateadd komutunu kullanıyoruz
belki size bir fikir verebilir sanırım
kanatimce burdada buna benzer bi fonksiyon kullanmanız lazım
kullanım şekli vba da
Kod:
Sub yeni()
Dim a As Date

a = Date
MsgBox DateAdd("m", 1, a)

End Sub
sizin yaptığınız gibi gün eklemek istersek
"m" yi "d" yapın eklemek istediğiniz gün sayısınıda 1 olan yere yazdırın veya yazın
umarım faydalı olur
 

ErkanA

Banned
Katılım
5 Aralık 2005
Mesajlar
47
İlginize teşekkür ederim Sayın abdi. Fakat bu kod Sqlde farklı. ne olduğunu çıkartamadım bir türlü :)
 

ErkanA

Banned
Katılım
5 Aralık 2005
Mesajlar
47
bugün kendim sorup kendim cevaplıyorum nedense :) yukarıdaki functionda varchar yapmışım. onu numeric yapınca sorun çözüldü. İlgilenen arkadaşlara teşekkürler
 
Üst