Ok, tout d'abord, j'ai vu this thread. Mais aucune des solutions n'est très satisfaisante. La réponse nommée ressemble à NULLs la casser, et la réponse la mieux cotée semble désagréable à maintenir. Je me demandais quelque chose comme ce qui suit:Meilleure façon de calculer Max/Min de N colonnes dans SQL Server
CREATE FUNCTION GetMaxDates
(
@dte1 datetime,
@dte2 datetime,
@dte3 datetime,
@dte4 datetime,
@dte5 datetime
)
RETURNS datetime
AS
BEGIN
RETURN (SELECT Max(TheDate)
FROM
(
SELECT @dte1 AS TheDate
UNION ALL
SELECT @dte2 AS TheDate
UNION ALL
SELECT @dte3 AS TheDate
UNION ALL
SELECT @dte4 AS TheDate
UNION ALL
SELECT @dte5 AS TheDate) AS Dates
)
END
GO
Les principaux problèmes que je vois sont que s'il n'y a que trois champs à comparer, vous auriez encore de spécifier NULL pour les 2 autres, et si vous vouliez l'étendre à six comparaisons viendrait à briser l'usage existant. S'il s'agissait d'une procédure stockée paramétrée, vous pouviez spécifier un paramètre par défaut pour chaque paramètre, et l'ajout de nouveaux paramètres ne romprait pas les références existantes. La même méthode pourrait également être étendue à d'autres types de données ou à des choses comme Min ou Avg. Y at-il un inconvénient majeur à cela que je ne repère pas? Notez que cette fonction fonctionne si certaines, toutes ou aucune des valeurs qui lui sont passées sont des valeurs nulles ou des doublons.
Une downvote soudaine et inexpliquée 2,5 ans plus tard? – MartW