एसक्यूएल सर्वर 2012 या अधिक है, तो आप के संयोजन का उपयोग कर सकते हैं IIF
और ISNULL
(या COALESCE
2 मूल्यों की अधिकतम प्राप्त करने के लिए)।
जब उनमें से 1 भी NULL हो।
IIF(col1 >= col2, col1, ISNULL(col2, col1))
या यदि आप चाहते हैं कि जब दोनों NULL हो तो उसे 0 पर लौटना होगा
IIF(col1 >= col2, col1, COALESCE(col2, col1, 0))
उदाहरण स्निपेट:
-- use table variable for testing purposes
declare @Order table
(
OrderId int primary key identity(1,1),
NegotiatedPrice decimal(10,2),
SuggestedPrice decimal(10,2)
);
-- Sample data
insert into @Order (NegotiatedPrice, SuggestedPrice) values
(0, 1),
(2, 1),
(3, null),
(null, 4);
-- Query
SELECT
o.OrderId, o.NegotiatedPrice, o.SuggestedPrice,
IIF(o.NegotiatedPrice >= o.SuggestedPrice, o.NegotiatedPrice, ISNULL(o.SuggestedPrice, o.NegotiatedPrice)) AS MaxPrice
FROM @Order o
परिणाम:
OrderId NegotiatedPrice SuggestedPrice MaxPrice
1 0,00 1,00 1,00
2 2,00 1,00 2,00
3 3,00 NULL 3,00
4 NULL 4,00 4,00
लेकिन अगर किसी को कई मानों की जरूरत है?
तब मैं घाटी के एकत्रीकरण के लिए आवेदन करने का सुझाव देता हूं।
इसका यह भी लाभ है कि यह एक ही समय में अन्य चीजों की गणना कर सकता है।
उदाहरण:
SELECT t.*
, ca.[Total]
, ca.[Maximum]
, ca.[Minimum]
, ca.[Average]
FROM SomeTable t
CROSS APPLY (
SELECT
SUM(v.col) AS [Total],
MIN(v.col) AS [Minimum],
MAX(v.col) AS [Maximum],
AVG(v.col) AS [Average]
FROM (VALUES (t.Col1), (t.Col2), (t.Col3), (t.Col4)) v(col)
) ca
GREATEST
फ़ंक्शन के रूप में अधिकांश अन्य डेटाबेस में लागू किया गया है; SQLiteMAX
कुल में कई कॉलम की अनुमति देकर समर्थन का अनुकरण करता है ।