1. Создаем. Восемь было делать влом поэтому всего четыре.
CREATE TABLE [dbo].[testdata] (
[id] [int] NULL ,
[data_1] [datetime] NULL ,
[data_2] [datetime] NULL ,
[data_3] [datetime] NULL ,
[data_4] [datetime] NULL
) ON [PRIMARY]
GO
2. Заполняем рандомными датами
1 2008-01-01 00:00:00.000 2008-03-02 00:00:00.000 2008-05-02 00:00:00.000 2007-05-05 00:00:00.000
2 2007-05-04 00:00:00.000 2006-03-04 00:00:00.000 2006-08-02 00:00:00.000 2008-04-03 00:00:00.000
3 2007-04-03 00:00:00.000 2007-07-07 00:00:00.000 2000-01-01 00:00:00.000 2008-04-20 00:00:00.000
3. Выбираем максимальный для каждой записи, например,
select
case
when ((data_1>data_2) and (data_1>data_3) and (data_1>data_4)) then data_1
when ((data_2>data_1) and (data_2>data_3) and (data_2>data_4)) then data_2
when ((data_3>data_1) and (data_3>data_2) and (data_3>data_4)) then data_3
else data_4
end as MaxDateInRow
from testdata
2008-05-02 00:00:00.000
2008-04-03 00:00:00.000
2008-04-20 00:00:00.000
4. Восьмое поле
select
1,2,3,4,5,6,7,
case
when ((data_1>data_2) and (data_1>data_3) and (data_1>data_4)) then data_1
when ((data_2>data_1) and (data_2>data_3) and (data_2>data_4)) then data_2
when ((data_3>data_1) and (data_3>data_2) and (data_3>data_4)) then data_3
else data_4
end as MaxDateInRow
from testdata
А по правильному это решается правильным проектированием структуры чтобы потом не лопатить данные. Например, триггер при инсерте/апдейте обновляет определенное поле в строке - записывает максимальную дату в строке.