Sql datetime列之间的查询

Sql datetime列之间的查询,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个包含两个日期时间列的表,\u dateEntry和\u dateUpdate 我必须创建一个查询并根据以下条件选择正确的datetime列:取\u dateEntry和\u dateUpdate之间最近的一个\u dateUpdate可能为空,因此我编写了此条件 SELECT id, description, ISNULL(_dateUpdate, _dateEntry) as date FROM mytable 但这还不够,因为我还需要得到最新的。如何修改查询?您可以使用案例返回所需

我有一个包含两个日期时间列的表,
\u dateEntry
\u dateUpdate

我必须创建一个查询并根据以下条件选择正确的datetime列:取
\u dateEntry
\u dateUpdate
之间最近的一个
\u dateUpdate
可能为空,因此我编写了此条件

SELECT id, description, ISNULL(_dateUpdate, _dateEntry) as date FROM mytable

但这还不够,因为我还需要得到最新的。如何修改查询?

您可以使用案例返回所需内容:

SELECT id, description, MAX(ISNULL(_dateUpdate, _dateEntry)) AS date 
FROM mytable
GROUP BY id, description
SELECT
    id
    , description
    , CASE WHEN _dateEntry > ISNULL(_dateUpdate,0) 
           THEN _dateEntry ELSE _dateUpdate END AS date
FROM
    mytable

我想dateEntry从来都不是空的。如果可以为空,请告诉我,因为我更改了查询

试试这个:

SELECT id, description, 
CASE
   WHEN _dateUpdate IS NULL THEN _dateEntry
   WHEN _dateUpdate > _dateEntry THEN dateUpdate
   ELSE _dateEntry
END as date 
FROM mytable 
ORDER BY 
CASE
   WHEN _dateUpdate IS NULL THEN _dateEntry
   WHEN _dateUpdate > _dateEntry THEN dateUpdate
   ELSE _dateEntry
END desc
因此,如果_dateUpdate为NULL,您将获得_dateEntry的值,因此顺序在两个字段上

SELECT id, description, 
CASE
   WHEN _dateUpdate IS NULL THEN _dateEntry
   WHEN _dateUpdate > _dateEntry THEN dateUpdate
   ELSE _dateEntry
END as date 
FROM mytable 
ORDER BY 
CASE
   WHEN _dateUpdate IS NULL THEN _dateEntry
   WHEN _dateUpdate > _dateEntry THEN dateUpdate
   ELSE _dateEntry
END desc