sql server - Using IF in SQL Function with 2 Table -


मेरे पास ऐसा पृष्ठ है

 एक

बैक ?? टार। - & gt; आरंभ दिनांक बिट। Tar - & gt; समाप्ति दिनांक

मेरे पास इस पृष्ठ के लिए एक SQL है,

  SELECT B.HESAP_NO, B. TEKLIF_NO1 + '/' + B.TEKLIF_NO2 के रूप में 'TEKLIF', B.MUS_K_ISIM, dbo.fngcodeme (B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2, '01 / 01/2011 ', '11/03/2011') एएस 'यतान', (मामले में बी.डिओविज़_कोड = 21 तब 'यूरो' के बाद बीडीओविज़_कोड = 2 THEN 'अमरीकी डालर', जब बीडॉविज़_कोड = 1 THEN 'टीएल' अंत) के रूप में 'कुर ', D.AVUKAT, (मामला है जब D.HESAP में (Takip से T_HESAP_NO का चयन करें) फिर (परिवर्तित (VARCHAR (10), ICRA_TAR, 103) Takip कहां T_HESAP_NO = D.HESAP) और से चयन' 'अंत) AS' आईसीआरए तारा ° हा ° ', (मामला है जब D.HESAP में (Takip से T_HESAP_NO का चयन करें) फिर (बदलें चुनें (VARCHAR (10), HACIZ_TAR, 103) Takip कहां T_HESAP_NO = D.HESAP) और से' 'अंत)' के रूप में HACÄ ° जेड तारा ° हा ° 'YAZ..MARDATA.S_TEKLIF बी से, AVUKAT डी कहां B.HESAP_NO = D.HESAP और B.KAPANIS_TAR शून्य है और IsNull (dbo.fngcodeme (B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + बीटीईकेलाफ_NO2, '01 / 01/2011 ', '11 / 03/2011'), 0) & gt; 0 ग्रुप B.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2, B.DOVIZ_KOD, B.MUS_K_ISIM, D.AVUKAT, D.HESAP   

और यह मेरी <द्वारा कोड> dbo.fngcodeme समारोह,

  बदल फंक्शन [dbo]। [fngcodeme] (@HESAP INT, @DOV INT, @TEKLIF VARCHAR (10), @BAS VARCHAR ( 10), @BIT VARCHAR (10)) को वापस के रूप में घोषित @Result नाव सेट @Result = (योगफल (TUTAR) का चयन YAZ..MARDATA.M_GHAREKET से शुरू नाव कहां TEMEL_HESAP = @HESAP और DOVIZ_KOD = @DOV और REF_KOD = 'जीसी 'और BACAK_GRUP =' पीईआरटी 'और ISL_KOD = 1 और ACIKLAMA की तरह'% '+ @TEKLIF +'% 'और ISL_TAR & gt; = CONVERT (DATETIME, +' '+ @BAS +', 103) और ISL_TAR & lt; = CONVERT (DATETIME, + '+ + BIT +', 103)) रिटर्न @ रिजल्ट एण्ड   

मुझे क्या चाहिए

  IF 'bit' टार। (समाप्ति तिथि) `कम या बराबर है 28/02/2011 - & gt; M_HAREKET का प्रयोग करें (तालिका) अगर बाबा ?? टार। (प्रारंभ तिथि) महान या बराबर है 01/03/2011 - & gt; M_GHAREKET (टेबल) का उपयोग करें   

मैं यह कैसे कर सकता हूं?

क्या मुझे SQL या function को बदलना चाहिए? कौन सा एक?

यदि @ बीएएस और @ बीआईटी तिथियां हैं, तो उन्हें तिथियों के रूप में पास करें VARCHAR का उपयोग न करें।

  वैकल्पिक फ़ंक्शन [dbo]। [Fngcodeme] (@HESAP INT, @ डीओवी आईएनटी, @ टीकेआईएलआईएफ VARCHAR (10), @ बीएएस डेटटाइम, @ बिसेट डेटाटाइम) रिटर्न के रूप में घोषित शुरू नाव @Result नाव अगर CONVERT (DATETIME, @ बीआईटी, 103) & lt; = '20,110,228' सेट @Result = (योगफल (TUTAR) YAZ..MARDATA.M_HAREKET से का चयन करें जहां TEMEL_HESAP = @HESAP और DOVIZ_KOD = @DOV और REF_KOD = 'जीसी' और BACAK_GRUP = 'पीईआरटी' और ISL_KOD = 1 और ACIKLAMA की तरह '%' + @TEKLIF + '%' और ISL_TAR & gt; = CONVERT (DATETIME, @ बास, 103) और ISL_TAR & lt; = CONVERT ( DATETIME, @ बीआईटी, 103)) और सेट @Result = (योगफल (TUTAR) का चयन YAZ..MARDATA.M_GHAREKET से कहां TEMEL_HESAP = @HESAP और DOVIZ_KOD = @DOV और REF_KOD = 'जीसी' और BACAK_GRUP = 'पीईआरटी' और ISL_KOD = 1 और ACIKLAMA की तरह '%' + @TEKLIF + '%' और ISL_TAR & gt; = CONVERT (DATETIME, @ बास, 103) और ISL_TAR & lt; = CONVERT (DATETIME, @ बीआईटी, 103)) रिटर्न @Result अंत   

कॉलिंग फ़ंक्शन के लिए, क्षेत्र विशिष्ट तिथि स्वरूपों का उपयोग न करें। YYYYMMDD या आईएसओ / एक्सएमएल वाले में से एक पर चिपकाएं। तो आपकी क्वेरी होगी

  SELECT B.HESAP_NO, B.TEKLIF_NO1 + '/' + बीटीईकेएलआईएफ_एनओ 2 एएस 'TEKLIF', बी.एम.यू.यू.एस.आई.आई.आई.एम., डीबी.एफएनजीडीएएमई (बीएचईएसएपीओएनओ, बी। DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2, '20110101', '20110311') के रूप में 'यतान', ......    

Comments