我正在做一个选择,我想要突出显示最近日期的所有行。这不是每组,而是整个返回的表。
我仍然希望检索表中的所有行,无论它们是否为max,但我想确保我们可以找到表的最新值子集。最好是一个带有标志或实际值的新列。
我该怎么做?
当前表格(示例)
+----+-------------+
| Id | Date |
+----+-------------+
| 1 | 1 Jan 2012 |
| 2 | 3 Jan 2012 |
| 3 | 2 Jan 2012 |
| 3 | 5 Jan 2012 |
| 4 | 5 Jan 2012 |
+----+-------------+
理想输出
+----+-------------+---------+
| Id | Date | Latest? |
+----+-------------+---------+
| 1 | 1 Jan 2012 | no |
| 2 | 3 Jan 2012 | no |
| 3 | 2 Jan 2012 | no |
| 3 | 5 Jan 2012 | yes |
| 4 | 5 Jan 2012 | yes |
+----+-------------+---------+
答案 0 :(得分:0)
您可以使用MAX
:
SELECT my_table.*, CASE WHEN date = max_date THEN 'yes' ELSE 'no' END AS latest
FROM my_table
JOIN (SELECT MAX(date) AS max_date FROM my_table) t -- Note it's only one row, no need for a join condition
答案 1 :(得分:0)
试试这个
SELECT ID,DATE,
CASE WHEN DATE = (SELECT MAX(DATE) FROM TABLE1) Then 'YES' ELSE 'No' END LATEST
FROM TABLE1 T1
答案 2 :(得分:0)
尝试这个,我已将最大日期分开,因此它只获得一次最大日期并在主查询中使用它。
DECLARE @MaxDate As DateTime
SELECT @MaxDate = MAX(DATE) FROM TABLE1
SELECT ID,
DATE,
CASE WHEN DATE = @MaxDate Then 'yes' ELSE 'no' END Lates
FROM TABLE1
ORDER BY ID, DATE