ओरेकल और माईएसक्यूएल में, मैं एक ऐसा फ़ंक्शन कैसे बना सकता हूं जो अनिश्चितकालीन पैरामीटर लेता है ताकि इसे GREATEST (value1, value2, ...) कहा जा सके?SQL उपयोगकर्ता परिभाषित कार्यों के लिए अनिश्चित संख्या में तर्क?
एक निश्चित मानक द्वारा दो मानों की तुलना करना काफी आसान है, लेकिन एक और तुलना में "अधिक" मान को पार करना मुझे लगता है कि मुझे SQL में काम नहीं लगता है।
धन्यवाद!
संपादित करें (माइक की टिप्पणी के बाद नीचे): मैं एकाधिक कॉलम की तुलना करने के लिए एक समाधान की तलाश में हूं। ठोस शब्दों में, मेरा सवाल है कि GREATEST() को यूडीएफ के रूप में कैसे कार्यान्वित किया जाए। निम्नलिखित कोड तीन कॉलम की तुलना करता है।
SELECT CASE WHEN CASE WHEN col_1 < col_2 THEN col_2
ELSE col_1 END < col_3 THEN col_3
ELSE CASE WHEN col_1 < col_2 THEN col_2
ELSE col_1 END END AS greatest
FROM figures;
जाहिर है, यह इतना अच्छा नहीं है। यह एक सामान्य कार्य करने के लिए और अधिक उपयोगी होगा जो मूल्यों की सूची में एक ही तुलना विधि को लागू करता है।
तक एसक्यूएल मैं किसी भी SQL डेटाबेस उत्पाद मतलब है, लेकिन मैं एक समाधान है कि Oracle में काम करता है या MySQL
इस रूप में एक ही है - चयन * से, x desc/asc द्वारा क्रम अधिकतम मूल्य पहले/आखिरी होना चाहिए? एक्सएसएलटी में भी, मैं बस चीजों को अधिकतम मूल्य प्राप्त करने के लिए सॉर्ट करता हूं? – Mike
संभवतः आपका मतलब एसक्यूएल सर्वर - एसक्यूएल (आगे योग्यता के बिना) एक भाषा को संदर्भित करता है, जो विभिन्न विभिन्न उत्पादों द्वारा अलग-अलग डिग्री के लिए लागू होता है, और प्रत्येक के अपने अद्वितीय एक्सटेंशन भी होते हैं। –
यहां एक तरीका है जो 'केस' कथन को बहुत बेहतर बनाता है। http://stackoverflow.com/questions/7995945/how-to-i-modify-this-t-sql-query-to-return-the-maximum-value-for-different-colum/7996068#7996068 –