Sql server 2008 如何在Sql的另一列中查找最新的日期值和更新?

Sql server 2008 如何在Sql的另一列中查找最新的日期值和更新?,sql-server-2008,sql-update,Sql Server 2008,Sql Update,我有E列是日期值,我必须用最新的日期值更新第四列吗 因此,请帮助我在Sql server中为其编写更新查询: Date1 Date2 Date3 Latest Date 11/24/1991 1/14/2003 11/24/1991 1/14/2003 请尝试使用下面的代码段 SELECT CASE WHEN Date1 >= Date2 AND Date1 >= Date3 THEN Date1

我有E列是日期值,我必须用最新的日期值更新第四列吗

因此,请帮助我在Sql server中为其编写更新查询:

   Date1       Date2        Date3      Latest Date
11/24/1991   1/14/2003    11/24/1991    1/14/2003

请尝试使用下面的代码段

SELECT
    CASE
        WHEN Date1 >= Date2 AND Date1 >= Date3 THEN Date1
        WHEN Date2 >= Date1 AND Date2 >= Date3 THEN Date2
        WHEN Date3 >= Date1 AND Date3 >= Date2 THEN Date3
        ELSE                                        Date1
    END AS Latest_Date
FROM TableName
试试这个

UPDATE  TableName
SET     LatestDate = ( SELECT   CASE WHEN Date1 >= Date2
                                          AND Date1 >= Date3 THEN Date1
                                     WHEN Date2 >= Date1
                                          AND Date2 >= Date3 THEN Date2
                                     WHEN Date3 >= Date1
                                          AND Date3 >= Date2 THEN Date3
                                     ELSE Date1
                                END
                     ) 

别忘了添加条件

您也可以这样做:-

Set Nocount On;

---- preparing test data
Declare @Dates Table
(
     PrimaryIdKey   Int Identity(1,1)
    ,Date1          Date
    ,Date2          Date
    ,Date3          Date
    ,LatestDate     Date
)

Insert Into @Dates(Date1,Date2,Date3) Values
('11/24/1991','1/14/2003','11/24/1991')
----End :: preparing test data

Update  dp
Set     dp.LatestDate = d.DateValues
From    @Dates As dp
        Join
        (
            Select   d.PrimaryIdKey
                    ,Max(d.DateValues) As DateValues
            From    (
                        Select  d.PrimaryIdKey, d.Dates, d.DateValues
                        From    @Dates
                        UnPivot
                        (
                          DateValues
                          For Dates in (Date1, Date2, Date3)
                        ) d
                    ) As d
            Group By d.PrimaryIdKey
        ) As d On dp.PrimaryIdKey = d.PrimaryIdKey

Select   PrimaryIdKey
        ,Date1
        ,Date2
        ,Date3
        ,LatestDate
From    @Dates As d