2011-09-30 8 views
8

हैं वहाँ की तरहएसक्यूएल में, वहाँ गैर कुल न्यूनतम/अधिकतम ऑपरेटरों

select max(val,0) 
from table 

मैं नहीं पूरे तालिका के अधिकतम मूल्य को खोजने के लिए

वहाँ है एक आसान होने के लिए देख रहा हूँ कुछ है इस अधिकार से रास्ता?

select case when val > 0 then val else 0 end 
from table 

संपादित करें: मैं Microsoft SQL सर्वर का उपयोग कर रहा

+0

क्या एसक्यूएल के कार्यान्वयन से बचा जाता है? – JNK

+0

फोरट्रान में, MAX (ए, बी, ...) ने जो किया आप चाहते थे। एसक्यूएल में, कुछ बोलीयां 'लार्जर' या 'स्मॉलर' या 'लार्जस्ट' या 'स्मालेस्ट' जैसे कार्यों का समर्थन करती हैं। AFAIK कार्य के लिए एक मानक कार्य नहीं है। –

+0

भयभीत नल से सावधान रहें। क्या आपको इसकी आवश्यकता है: 'जब वैल नल 0 है तो वैल> 0 फिर वैल ईएलएसई 0 अंतराल (उस मामले के लिए जहां 0 को शून्य नहीं कहा जाता है), या' केस जब वैल 1 नल है तो वैल 2 है जब वैल्यू 2 न्यूल है वैल 1 जब वैल 1> वैल 2 फिर वैल 1 ईएलएसई वैल 2 ईएनडी 'MAX (वैल 1, वैल 2)' के लिए। –

उत्तर

9

कार्य GREATEST और LEAST SQL मानक (, Postgresql उदा) नहीं हैं, लेकिन कई RDBMSs में हैं। तो

SELECT GREATEST(val, 0) FROM mytable; 
+0

धन्यवाद, ऊपर उठाया गया। मैं माइक्रोसॉफ्ट एसक्यूएल सर्वर चला रहा हूँ। तो ऐसा लगता है कि वे मौजूद नहीं हैं :(। – Colin

1

एसक्यूएल से प्रति में नहीं। लेकिन कई डेटाबेस इंजन उन कार्यों के सेट को परिभाषित करते हैं जिनका आप SQL कथन में उपयोग कर सकते हैं। दुर्भाग्यवश, वे आम तौर पर विभिन्न नामों और तर्क सूची का उपयोग करते हैं।

MySQL में, फ़ंक्शन GREATEST है। SQLite में, यह MAX है (यह एक पैरामीटर या अधिक के साथ अलग-अलग काम करता है)।

-3

आपके पास SQL ​​में जो भी है वह मान्य SQL भी नहीं है। ऐसा नहीं है कि एसक्यूएल में MAX कैसे काम करता है। टी-एसक्यूएल में MAX अधिकतम मूल्य लौटने वाली रेंज पर एकत्रित होता है। आप जो चाहते हैं वह केवल दो का बड़ा मूल्य है।

अधिक जानकारी के लिए इस पढ़ें:

Is there a Max function in SQL Server that takes two values like Math.Max in .NET?

0

यह एक सेट शामिल हों आधारित हैं?

SELECT 
    max(val) 
FROM 
(
select val 
from table 
UNION ALL 
select 0 
) foo 

यह एक अदिश यूडीएफ अन्य सवाल में सुझाव दिया जो अनुरूप बन बेहतर

संबंधित मुद्दे