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