এসকিউএল সার্ভার ২০১২ বা তার চেয়েও বেশি, আপনি সর্বাধিক 2 টি মান পেতে IIF
এবং ISNULL
(বা COALESCE
) এর সংমিশ্রণটি ব্যবহার করতে পারেন ।
এমনকি যখন তাদের 1 টি নুল হয়।
IIF(col1 >= col2, col1, ISNULL(col2, col1))
অথবা আপনি যদি চান যে এটি 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
তবে যদি একের একাধিক মান প্রয়োজন হয়?
তারপরে আমি VALUES এর সমষ্টিতে প্রয়োগের জন্য ক্রস করার পরামর্শ দিচ্ছি।
এটি একই সাথে অন্যান্য জিনিস গণনা করতে পারে যে সুবিধা আছে।
উদাহরণ:
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
ফাংশন হিসাবে প্রয়োগ করা হয় ; এসকিউএলাইটMAX
সামগ্রিকভাবে একাধিক কলামগুলিকে অনুমতি দিয়ে সহায়তা এমুলেট করে।