Μια απαίτηση αρκετών χρόνων υλοποιήθηκε μερικώς στον SQL Server καθώς αυτή την στιγμή είναι μόνο διαθέσιμη στις Azure SQL Databases και αφορά δύο T-SQL functions που υπάρχουν σε άλλα RDBMS εδώ και χρόνια.
Η απαίτηση αυτή αφορά τις GEATEST και LEAST functions.
Η πρώτη επιστρέφει την μεγαλύτερη τιμή από τις τιμές που εισάγονται στις παραμέτρους της και δεύτερη την μικρότερη τιμή.
Ακόμα το documentation δεν είναι ενημερωμένο με αυτές αλλά η σύνταξη τους είναι αρκετά απλή.
Syntax
SELECT GREATEST(<value1>,<value2>…<valueN>);
SELECT LEAST(<value1>,<value2>…<valueN>);
Η προσθήκη αυτή κάνει αρκετά καλύτερη την συγγραφή των queries καθώς στο παρελθόν (αλλά ακόμα και τώρα όσον αφορά τον SQL Server) έπρεπε να καταφύγουμε σε διάφορες τεχνικές όπως αυτή που παρουσιάζω στο παράδειγμα παρακάτω με την χρήση του APPLY operator
Mimic GREATEST and LEAST function
select
o.orderid,
o.orderdate,
o.requireddate,
o.shippeddate,
min(dd.dates) as min_date,
max(dd.dates) as max_date
from
sales.Orders as o
outer apply
( values (o.orderdate), (o.requireddate), (o.shippeddate) ) as dd(dates)
group by
o.orderid,
o.orderdate,
o.requireddate,
o.shippeddate;
Αντί για αυτό πλέον (ακόμα μόνο σε Azure SQL Databases) το παραπάνω query γίνεται όπως παρακάτω.
GREATEST and LEAST function usage
select
o.orderid,
o.orderdate,
o.requireddate,
o.shippeddate,
LEAST(o.orderdate, o.requireddate, o.shippeddate) as min_date,
GREATEST(o.orderdate, o.requireddate, o.shippeddate) as max_date
from
sales.Orders as o;
Θεωρώ ότι σύντομα θα είναι διαθέσιμες και στο SQL Server.
//Antonios Chatzipavlis