Oracle 上一条记录保存在表中的一列上

Oracle 上一条记录保存在表中的一列上,oracle,plsql,Oracle,Plsql,我有以下数据: CLIENT_NO , DATE , TYPE CLIENT 1- 22/09/2014 -001 CLIENT 1- 19/09/2014 -002 CLIENT 1- 10/09/2014 -005 CLIENT 2- 15/09/2014 -012 CLIENT 2- 20/09/2014 -011 我希望随着时间的推移,每个客户机的最新类型都存储在此表中。如何使用PL/SQL实现这一点?好吧,您并不真正需要PL/SQL;纯SQL就可以了 一个选项是对它们进行排序(在本例

我有以下数据:

CLIENT_NO , DATE , TYPE
CLIENT 1- 22/09/2014 -001
CLIENT 1- 19/09/2014 -002
CLIENT 1- 10/09/2014 -005
CLIENT 2- 15/09/2014 -012
CLIENT 2- 20/09/2014 -011

我希望随着时间的推移,每个客户机的最新类型都存储在此表中。如何使用PL/SQL实现这一点?

好吧,您并不真正需要PL/SQL;纯SQL就可以了

一个选项是对它们进行排序(在本例中,分析函数为
row\u number
rank
help),然后获取行号为1的行(因为
order by
子句按日期值降序排序)


请禁用大写锁定,然后将您的问题和标题都写在适当的情况下。所有大写字母的文本都很难阅读和理解,也不会让你更快得到答案。当你要求我们免费帮助你解决问题时,对我们大喊大叫也是非常不礼貌的。
SQL> with
  2  test (client_no, datum, type) as
  3  -- sample data
  4    (select 'client 1', date '2014-09-22', '001' from dual union all
  5     select 'client 1', date '2014-09-19', '002' from dual union all
  6     select 'client 1', date '2014-09-10', '005' from dual union all
  7     select 'client 2', date '2014-09-15', '012' from dual union all
  8     select 'client 2', date '2014-09-20', '011' from dual
  9    ),
 10  -- sort them
 11  sorted as
 12    (select client_no, datum, type,
 13       row_number() over (partition by client_no order by datum desc) rn
 14     from test
 15    )
 16  -- select the one with RN = 1
 17  select client_no, datum, type
 18  from sorted
 19  where rn = 1;

CLIENT_NO  DATUM      TYPE
---------- ---------- ----
client 1   22/09/2014 001
client 2   20/09/2014 011

SQL>