按日期选择 - oracle

时间:2016-07-18 17:11:04

标签: sql oracle date select

我从几个表中做了一个复杂的查询,它通过id返回一个实体列表 查询构建如:
" t为( - 复杂查询 - )从t"中选择*

喜欢(它并不重要):

  

12001
  12004个
  15003

我还有包含3列的表:

  1. 序列(我还用作身份)
  2. 实体(来自上方)
  3. value_date(格式:dd / mm / yyyy)
  4. 它的值日期对于所有实体都不相同。

    例如,表格如下:

    seq           entity        value_date 
    ----------    ----------    ----------  
    1580          12001         30/06/2016 
    1579          12004         31/05/2016 
    1578          15003         30/06/2016 
    1577          12001         31/05/2016 
    1576          12004         30/06/2016
    1575          15003         31/05/2016 
    1574          12004         30/04/2016 
    1573          67677         30/04/2016 
    

    我需要为每个实体运行(来自查询,因为该表还为我保留了不相关的实体),并为实体选择了max value_date的序列。

    结果需要列出3列:seq,entity,value_date(每个实体的最大值)

    我该怎么做?

    我希望我的问题很明确。

1 个答案:

答案 0 :(得分:1)

似乎你需要一个选择max(value_date)

每个实体

select seq,  entity, value_date 
from my_table 
where (entity, value_date) in  (select entity , max(value_date) 
                               from my_table  
                               group by entity);

如果有用,也可以这样尝试

select a.seq,  a.entity, a.value_date 
from my_table a
inner join my_table b on a.entity = b.entity 
group by b.entity
having  a.value_date = max(b.value_date)