每个具有最新日期和状态的sub_id都会选择?

时间:2018-04-13 07:01:29

标签: oracle oracle11g

enter image description here

Select p_id,max(dates)--,status,sub_id
from table_name
group by p_id;

如果我使用基于p_id的group by子句,那么如何返回状态和sub_id

3 个答案:

答案 0 :(得分:1)

你想要这样的东西

select p_id, status , sub_id from table1  t 
    inner join (Select p_id,max(dates) 
          from table1  group by p_id) g
     on t.p_id= g.p_id

答案 1 :(得分:0)

使用max(日期)创建内联视图并使用相同的表连接以获取所有必需的列,如下所示。

**Create table:**
CREATE TABLE table_name(ID NUMBER,p_id VARCHAR2(10),sub_id 
VARCHAR2(10),status VARCHAR2(10),dates DATE); 

**SQL Query:**
SELECT T.P_ID, SUB_ID, STATUS, INLINE_VIEW.DATES
 FROM TABLE_NAME T,
   (SELECT P_ID, MAX(DATES) DATES FROM TABLE_NAME GROUP BY P_ID) INLINE_VIEW
 WHERE T.P_ID = INLINE_VIEW.P_ID
 AND T.DATES = INLINE_VIEW.DATES
 ORDER BY T.P_ID

答案 2 :(得分:0)

有很多方法可以解决这个问题,但这是一种直接的方法。

SELECT *
FROM (
    SELECT 
        ROW_NUMBER() OVER (PARTITION BY P_ID ORDER BY DATES DESC) AS rn,
        T.P_ID, SUB_ID, STATUS, INLINE_VIEW.DATES
    FROM TABLE_NAME AS T
) AS u
WHERE u.rn = 1