Нет встроенной функции для возврата мин / макс двух (или более) столбцов. Вы можете реализовать свою собственную скалярную функцию для этого.
В SQL Server 2005+ вы можете использовать UNPIVOT , чтобы превратить столбцы в строки, а затем использовать функцию MIN:
CREATE TABLE [X]
(
[ID] INT,
[Date1] DATETIME,
[Date2] DATETIME,
[Date3] DATETIME
)
INSERT [X]
VALUES (0, '09/29/2011', '09/20/2011', '09/01/2011'),
(1, '01/01/2011', '01/05/2011', '03/03/2010')
SELECT [ID], MIN([Date]) AS [MinDate]
FROM [X]
UNPIVOT (
[Date] FOR d IN
([Date1]
,[Date2]
,[Date3])
) unpvt
GROUP BY [ID]