![](/img/trans.png)
[英]SQL get value based on corresponding min/max(value) from column in another related table
[英]SQL query to get value of another column corresponding to a max value of a column based on group by
我有下表:
ID BLOWNUMBER TIME LADLE
--- ---------- ---------- -----
124 1 01/01/2012 2
124 1 02/02/2012 1
124 1 03/02/2012 0
124 2 04/01/2012 1
125 2 04/06/2012 1
125 2 01/03/2012 0
我想有TIME
的最大值LADLE
為一組ID & BLOWNUMBER
。
需要輸出:
124 1 01/01/2012
124 2 04/01/2012
125 2 04/06/2012
如果您正在使用SQL Server(或支持CTE和ROW_NUMBER
其他引擎),則可以使用此CTE(公用表表達式)查詢:
;WITH CTE AS
(
SELECT
ID, BlowNumber, [Time],
RN = ROW_NUMBER() OVER (PARTITION BY ID, BLOWNUMBER ORDER BY [Time] DESC)
FROM Sample
)
SELECT *
FROM CTE
WHERE RN = 1
此CTE通過(ID, BLOWNUMBER)
“分區”您的數據,並且ROW_NUMBER()
函數從1開始為每個“分區”分配數字,按[Time]
列排序(最新時間值優先)。
然后,您只需從該CTE中選擇並使用RN = 1
來獲取每個數據分區的最新信息。
如果你使用的是sqllite(也可能與其他數據庫兼容); 你可以這樣做:
select
ct.id
, ct.blownumber
, time
from
new
, (
select
id
, blownumber
, max(ladle) as ldl
from
new
group by
id
, blownumber
) ct
where
ct.id = new.id
and ct.blownumber = new.blownumber
and ct.ldl = new.ladle;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.