आपकी तालिका ऐसा लगता है कि यह पहले सामान्य रूप में नहीं है।
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