我有一个包含两个DateTime列的表,_dateEntry
和_dateUpdate
。
我要创建一个查询并根据这些条件选择正确的日期时间列:在_dateEntry
和_dateUpdate
之间选择最新的。 _dateUpdate
可能为null,所以我写了这个条件
SELECT id, description, ISNULL(_dateUpdate, _dateEntry) as date FROM mytable
但是并不是因为我也得到了最新的。如何修改我的查询?
答案 0 :(得分:4)
您可以使用案例返回您想要的内容:
SELECT
id
, description
, CASE WHEN _dateEntry > ISNULL(_dateUpdate,0)
THEN _dateEntry ELSE _dateUpdate END AS date
FROM
mytable
答案 1 :(得分:3)
SELECT id, description, MAX(ISNULL(_dateUpdate, _dateEntry)) AS date
FROM mytable
GROUP BY id, description
答案 2 :(得分:3)
SELECT id, description, ISNULL(_dateUpdate, _dateEntry) as date
FROM mytable ORDER BY ISNULL(_dateUpdate, _dateEntry) desc
答案 3 :(得分:3)
我认为_dateEntry永远不会为NULL。如果可以为NULL告诉我,因为我更改了我的查询
试试这个:
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的值,因此订单位于两个字段