सुनिश्चित नहीं है कि मैं अपने CASE
कथन में कहां गलत हो रहा हूं। मैं अपने WHERE
क्लॉज में एक फिल्टर बनाने की कोशिश कर रहा हूं, जो केवल उपयोगकर्ता द्वारा चुने गए प्लेटफॉर्म के आधार पर उत्पादों को दिखाने के लिए है। मैंने थोड़ी देर के लिए इसके साथ खेला है और बहुत सारे उदाहरणों को गुगल किया है, कुछ भी करीब नहीं लग रहा था। मुझे यकीन है कि यह कुछ आसान है जो मुझे याद आ रही है। इसे इंगित करने के लिए आंखों की ताजा जोड़ी चाहिए। मैं इस बीच खुदाई करता रहूंगा।
@Platform AS INT,
@Type AS INT
AS
BEGIN
SELECT
[Product_Name],
[Product_Description],
[Product_Release],
[Product_Image],
[Windows_PC],
[Linux],
[Mac],
[Android],
[Fire_TV],
[Amazon_App_Store],
[Google_Play_Store],
[X_Box],
[Switch],
[Playstation],
[Link_Game_Play],
[Link_Twitter],
[Link_Download],
[Link_Web],
[Available_Now],
[New_Release],
[Coming_Soon],
[Open_Beta]
FROM
[White_Box_Gaming].[dbo].[WBG_Product_Profile]
WHERE
CASE
WHEN @Platform = 1 THEN [Windows_PC] = 1
WHEN @Platform = 2 THEN [Mac] = 1
WHEN @Platform = 3 THEN [Linux] = 1
WHEN @Platform = 4 THEN [Android] = 1
ELSE [Windows_PC] = 1
त्रुटि:
संदेश 102, स्तर 15, राज्य 1, प्रक्रिया Select_Portal_Games, पंक्ति 37
'=' के पास गलत सिंटैक्स।
मुझे पता है कि मेरे पास एक वाक्यविन्यास मुद्दा है। मैं WHERE
क्लॉज में कुछ सही फॉर्मेट नहीं कर रहा हूं।
2 जवाब
बस सरल तर्क का प्रयोग करें:
WHERE (@Platform = 1 AND [Windows_PC] = 1) OR
(@Platform = 2 AND [Mac] = 1) OR
(@Platform = 3 AND [Linux] = 1) OR
(@Platform = 4 AND [Android] = 1) OR
(@Platform NOT IN (1, 2, 3, 4) AND [Windows_PC] = 1)
CASE
एक अभिव्यक्ति है जो परिणाम उत्पन्न करता है। कौन सा कोड चलाना है यह चुनने के लिए यह केवल एक if
ब्लॉक नहीं है। तो इसके बजाय, आपको ऐसा कुछ करने की ज़रूरत है:
WHERE 1 =
CASE WHEN @Platform = 2 THEN [Mac]
WHEN @Platform = 3 THEN [Linux]
WHEN @Platform = 4 THEN [Android]
ELSE
[Windows_PC]
END
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।