簡體   English   中英

SQL查詢以獲取與基於group by的列的最大值對應的另一列的值

[英]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

有關在線現場演示,請參閱此SQL小提琴

此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.

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