簡體   English   中英

選擇所有行,但在新列中顯示表中的最大值

[英]Select all rows but show the max value from the table in a new column

我正在做一個選擇,我想要突出顯示最近日期的所有行。 這不是每組,而是整個返回的表。

我仍然想要檢索表中的所有行,無論它們是否是最大值,但我想確保我們可以找到表的最新值子集。 優選地,新列具有標志或其中的實際值。

我該怎么做?

當前表(示例)

+----+-------------+
| 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     |
+----+-------------+---------+

您可以使用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

試試這樣吧

SELECT ID,DATE,
       CASE WHEN DATE = (SELECT MAX(DATE) FROM TABLE1) Then 'YES' ELSE 'No' END LATEST
FROM TABLE1 T1 

FIDDLE DEMO

試試這個,我已將最大日期分開,因此它只獲得一次最大日期並在主查詢中使用它。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM