मैं जहां क्लॉज में केस एक्सप्रेशन लिखने की कोशिश कर रहा हूं, लेकिन मैं जो करना चाहता हूं उसके लिए सिंटैक्स को सही करने में मुझे परेशानी हो रही है। जहां क्लॉज में मैं चाहता हूं कि केस स्टेटमेंट कॉलम 'इंडिविजुअलरेटऑप्शन' की जांच करे और उस कॉलम के आधार पर मैं क्लॉज में जोड़ना चाहता हूं।

--- Get generic rates
            select  case when RateType = 'PRE' then 1
                         when RateType = 'RID' then 2
                         when RateType = 'QUL' then 3 end,
                    BillingEntityId,
                    @GroupID,
                    RateID,
                    TierItemId,
                    RateUnitType,
                    RateUnitValue,
                    RateType,
                    RateTypeEntityID,
                    EffectiveDate,
                    ExpirationDate,
                    Usage,
                    AgeFrom,
                    AgeTo,
                    Gender,
                    PayBrokerCommissions
              from #BillingEntityRates
             where case IndividualRateSelectionOption when 'ANV' then @AnniversaryDate between EffectiveDate and ExpirationDate
                    OR isnull(@AnniversaryDate,@MemberEligibilityDate) between EffectiveDate and ExpirationDate
                    and EntityId is null

यदि व्यक्तिगत दर चयन विकल्प 'एएनवी' है तो मैं "@anniversaryDate के बीच प्रभावी और समाप्ति तिथि और EntityId शून्य है" के आधार पर फ़िल्टर करना चाहता हूं।

यदि व्यक्तिगत दर चयन विकल्प 'एएनवी' नहीं है, तो मैं प्रभावी दिनांक और समाप्ति दिनांक और EntityId के बीच "isnull(@AnniversaryDate,@MemberEligibilityDate) के आधार पर फ़िल्टर करना चाहता हूं"

ऊपर मैंने अभी तक कोशिश की है लेकिन यह वाक्यविन्यास के बारे में शिकायत कर रहा है। अग्रिम में धन्यवाद।

0
H22 3 जिंदा 2020, 22:34

1 उत्तर

सबसे बढ़िया उत्तर

जब सरल बूलियन तर्क काम करता है तो case का उपयोग न करें:

where (IndividualRateSelectionOption = 'ANV' and 
       @anniversaryDate between Effective and ExpirationDate and
       EntityId is null
      ) or
      (IndividualRateSelectionOption <> 'ANV' and 
       coalesce(@AnniversaryDate, @MemberEligibilityDate) between EffectiveDate and ExpirationDate and
       EntityId is null
      )

आप EntityId is null तर्क को फ़िल्टर कर सकते हैं:

where EntityId is null and
      ( (IndividualRateSelectionOption = 'ANV' and 
         @anniversaryDate between Effective and ExpirationDate          
        ) or
        (IndividualRateSelectionOption <> 'ANV' and 
         coalesce(@AnniversaryDate, @MemberEligibilityDate) between EffectiveDate and ExpirationDate and
        )
      )
1
Gordon Linoff 3 जिंदा 2020, 19:43