यदि आप SQL Server 2008 (या ऊपर) का उपयोग कर रहे हैं, तो यह बेहतर समाधान है:
SELECT o.OrderId,
(SELECT MAX(Price)
FROM (VALUES (o.NegotiatedPrice),(o.SuggestedPrice)) AS AllPrices(Price))
FROM Order o
सभी क्रेडिट और वोट संबंधित प्रश्न के स्वेन के उत्तर पर जाने चाहिए, "मल्टीपल कॉलम का SQL MAX?"
मैं कहता हूं कि यह "सर्वश्रेष्ठ उत्तर है "क्योंकि:
- इसे आपके कोड को UNION's, PIVOT's, UNPIVOT's, UDF's, और क्रेज़ी-लॉन्ग CASE स्टेटमेंट्स के साथ जटिल बनाने की आवश्यकता नहीं है।
- यह नल को संभालने की समस्या से ग्रस्त नहीं है, यह उन्हें ठीक से संभालता है।
- "MAX" को "MIN", "AVG" या "SUM" से बदलना आसान है। आप कई अलग-अलग स्तंभों पर कुल योग खोजने के लिए किसी भी समग्र फ़ंक्शन का उपयोग कर सकते हैं।
- आप मेरे द्वारा उपयोग किए जाने वाले नामों तक सीमित नहीं हैं (अर्थात "सभी मूल्य" और "मूल्य")। अगले लड़के के लिए पढ़ने और समझने में आसान बनाने के लिए आप अपना खुद का नाम चुन सकते हैं।
- आप SQL Server 2008 के व्युत्पन्न_टेबल्स का उपयोग करके कई समुच्चय ढूंढ सकते हैं जैसे:
MAX(a), MAX(b) FROM (VALUES (1, 2), (3, 4), (5, 6) चुनें। , (7, 8), (9, 10)) AS MyTable(a, b)