簡體   English   中英

SQL Select min(date) group by 對應行

[英]SQL Select min(date) group by with corresponding row

父集的某些子集具有發布日期。 我想要最早的發布日期和子集的編號,但在一個小組基礎上。

我試試這個:

SELECT Sub_No,Parent_No,MIN(DATE)
FROM mytable
WHERE other_CODE IS NULL
GROUP BY Sub_No,Parent_No
ORDER BY Parent_No DESC

但我明白了:但我只想要最早發布的一個作為 2015-02-12 的 Sub_No 和 Parent_No。

任何幫助將不勝感激!

Parent_No   (No column name)    Sub_No
07  2015-02-12  90
07  2015-11-03  88
07  2017-02-06  59

您可以按如下方式使用NOT EXISTS

SELECT Sub_No,Parent_No,DATE
FROM mytable t
where other_CODE IS NULL
  and not exists (select 1 from mytable tt
  where tt.Parent_No = t.Parent_No and tt.date < t.date
     and tt.other_CODE is null)
  

如果你的數據庫支持解析function那么你可以使用如下:

select Sub_No,Parent_No, DATE from
(SELECT Sub_No,Parent_No, DATE,  
       row_number() over (partition by parent_no order by date) as rn
FROM mytable
WHERE other_CODE IS NULL) t
where rn = 1

只有當 Parent_No 和 DATE 是 mytable 的唯一鍵時,你才可以這樣做:

SELECT * FROM mytable
INNER JOIN
(
SELECT Parent_No,MIN(DATE) as MinDate
FROM mytable
WHERE other_CODE IS NULL
GROUP BY Parent_No
) AS Filter 
on mytable.Parent_No = Filter.Parent_No and mytable.DATE = Filter.MinDate

暫無
暫無

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

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