sql - टी-एसक्यूएल मामले खंड: एक बाहरी जॉइन के साथ WHEN नाखून निर्दिष्ट करने पर जारी



tsql sql-server-2012 (1)

निम्नलिखित प्रश्न सही ढंग से सभी वर्तमान / भावी ग्राहकों के रिकॉर्ड को प्रदर्शित करता है चाहे उन्हें आदेश दिया गया हो या नहीं। लेकिन नीचे दिए गए SELECT कथन के YesNO उर्फ हमेशा 1 लौट रहा है जब कुछ मामलों में o.OrderID शून्य है (यानी, जब एक परिप्रेक्ष्य ग्राहक ने अभी तक कोई आदेश नहीं रखा है)। क्यूं कर? मुझे लगता है कि नीचे दिया गया मामला सही है (जैसा कि इस प्रतिक्रिया में दिखाया गया है)। मैं SQL Server 2012 का उपयोग कर रहा हूँ नोट : कृपया ध्यान रखें कि हालांकि ऑर्डरआइडी एक पीके है, अगर इसमें शामिल होने की स्थिति पूरी नहीं हुई है तो ओजर जॉइन में ऑर्डर टेबल के अन्य सभी कॉलम के साथ यह हमेशा रिक्त होगा।

SELECT c.customerID, o.OrderID, CASE When o.OrderID is NULL Then 0 Else 1 End as YesNO
FROM Customers c
LEFT JOIN Orders o
 ON c.customerID = o.customerID

ISNULL का उपयोग करके देखें

मुझे पूरा यकीन है कि इसका कारण यह है कि जब आप नल की तुलना नल करते हैं तो नल नल होता है, इस प्रकार झूठ, इसलिए यह आपके ELSE 1 का मूल्यांकन क्यों करता है

SELECT c.customerID, o.OrderID, CASE When ISNULL(o.OrderID, 0) = 0 Then 0 Else 
1 End as YesNO
FROM Customers c
LEFT JOIN Orders o
 ON c.customerID = o.customerID




sql-server-2012