SQL Select min(date) 分组依据与相应的行
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)
如果你的数据库支持分析功能,那么你可以按如下方式使用它:
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
父集的一些子集有发布日期。我想要最早的发布日期和子集的编号,但是在一个组基础中。
我试试这个:
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)
如果你的数据库支持分析功能,那么你可以按如下方式使用它:
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