繁体   English   中英

SQL 连接表的条件仅显示 Max

[英]SQL join tables with conditions to only show Max

我需要在 UniqueID 上加入 tableA 和 tableB 但是我只想加入 tableA 中具有某些状态限制的最新日期(不在 S 中)。 我知道我需要使用 Max 功能,但是我无法让它工作。 我如何得到下面的结果表?

我在想类似的东西:

Select
    tableA.UniqueID,
    MAX(tableA.Date),
    tableA.Status,
    tableB.Col1
    From tableA 
Inner join tableB on (tableB.UniqueID = tableA.UniqueID and tableA.Status = 'A')`

tableA:

| UniqueID | Date                 | Status |
| -------- | -------------------  |--------|
| 123      | 2015-07-05  00:00:00 | S      |
| 123      | 2015-07-06  00:00:00 | S      |
| 123      | 2015-07-07  00:00:00 | A      |

and tableB:

| UniqueID | Col1 |
| -------- | -    |
| 123      | X    |
| 125      | Y    |
| 126      | Z    |

Result table:

| UniqueID | Date                 | Status | Col1|
| -------- | -------------------  |--------|---- |
| 123      | 2015-07-07  00:00:00 | A      | X   |

这是其中一种方式——

  select
    t_a.*, t_b.*
  from 
    table_b t_b 
    join 
    (
      select 
        uniqueid, date, status,
        rank() over (partition by uniqueid order by date desc ) rank_
      from
        table_a
    ) t_a on t_b.uniqueid = t_a.uniqueid 
  where
    t_a.rank_ = 1
  ;

小提琴 url: ( https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=06660177b6c116a811218863ce428985 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM