**P_NO N_ADD O_ADD DATE_CHANGED**
*12646 abc@gmail.com 02-JAN-15 10.17.52.000000000 AM*
12646 abc@gmail.com test@gmail.com 02-JAN-15 10.15.52.000000000 AM
12646 abc@gmail.com 02-JAN-15 10.15.52.000000000 AM
12646 abc@gmail.com 02-JAN-15 10.13.25.000000000 AM
12646 abc@gmail.com abc@gmail.com 02-JAN-15 10.13.25.000000000 AM
*12648 test@gmail.com 24-FEB-15 01.46.46.000000000 PM*
12648 test@gmail.com test@gmail.com 09-JAN-15 09.21.31.000000000 AM
12648 test@gmail.com test@gmail.com 09-JAN-15 09.21.31.000000000 AM
12648 test@gmail.com test@gmail.com 09-JAN-15 09.21.31.000000000 AM
12648 test@gmail.com test@gmail.com 09-JAN-15 09.20.51.000000000 AM
12648 test@gmail.com test@gmail.com 09-JAN-15 09.20.51.000000000 AM
12648 test@gmail.com test@gmail.com 09-JAN-15 09.20.51.000000000 AM
12648 test@gmail.com test@gmail.com 09-JAN-15 09.20.09.000000000 AM
12648 test@gmail.com abc@gmail.com 09-JAN-15 09.20.09.000000000 AM
这是我从下面的查询得到的结构。
select *
from test1
where O_ADD is not null
order by P_NO asc,DATE_CHANGED desc.
这里我只希望第一行是最近的,而N_ADD对于每个不同的P_NO都是null。如下。
**P_NO N_ADD O_ADD DATE_CHANGED**
12646 abc@gmail.com 02-JAN-15 10.17.52.000000000 AM
12648 test@gmail.com 24-FEB-15 01.46.46.000000000 PM
任何人都可以帮我解决这个问题。
谢谢
答案 0 :(得分:3)
如果您想要完整的行,请使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by p_no order by date_changed) as seqnum
from table t
) t
where n_add is null and seqnum = 1;
答案 1 :(得分:0)
试试这个: -
SELECT P_NO, N_ADD, O_ADD, MAX(DATE_CHANGED)
FROM YOUR_TAB
WHERE N_ADD IS NULL
GROUP BY P_NO, N_ADD, O_ADD;