Select p_id,max(dates)--,status,sub_id
from table_name
group by p_id;
如果我使用基于p_id的group by子句,那么如何返回状态和sub_id
答案 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