Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

गतिशील रूप से चुनिंदा क्वेरी में एक विशेषता नाम कैसे लिखें

आपकी तालिका ऐसा लगता है कि यह पहले सामान्य रूप में नहीं है।

period0Id से period2Id के लिए तीन कॉलम के बजाय आपके पास PeriodIndex के लिए एक कॉलम (0,1,2) के मान के साथ हो सकता है और PeriodId के लिए एक कॉलम हो सकता है और फिर यह केवल एक WHERE PeriodIndex = @Check होगा।

जैसा कि आप प्रयास कर रहे हैं, आप एक चर के साथ स्ट्रिंग इंटरपोलेशन का उपयोग करके कॉलम का चयन नहीं कर सकते हैं। एसक्यूएल स्ट्रिंग को गतिशील रूप से बनाने के लिए आप गतिशील एसक्यूएल का उपयोग कर सकते हैं। या बस विकल्पों को हार्डकोड करें यदि उन सभी का डेटा प्रकार समान है।

Select ID, 
       Name, 
       StatusId = CASE @Check WHEN 0 THEN Period0Id
                              WHEN 1 THEN Period1Id
                              WHEN 2 THEN Period2Id
                   END
From mytable


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP FreeTDS एक्सटेंशन का उपयोग करके MSSQL सर्वर से UTF-8 वर्णसेट के साथ डेटा प्राप्त करना

  2. टी-एसक्यूएल का उपयोग करके आरपीसी आउट को कैसे सक्षम करें

  3. क्रिस्टल रिपोर्ट बनाम माइक्रोसॉफ्ट एसक्यूएल सर्वर रिपोर्टिंग सेवाएं

  4. एमएस एसक्यूएल तिथियों की तुलना करें?

  5. एसक्यूएल सर्वर में किसी फ़ंक्शन के अंदर स्ट्रिंग को निष्पादित करने के तरीके पर ट्रिक्स