053-20180222-【数据库学习】提取受理数据、号码状态、更新数据

O

        今天是春节后的第一个工作日,早上又坐上了熟悉而拥挤的地铁,来到办公室和同事们互相问候,就又开始了平凡而又简单的一天。今天在办公室趁着新的需求还没有布置,主要总结和整理了之前月报和需求中所用的数据表及其逻辑细节。

R

        今天早上到了办公室之后就开始做卫生,把自己的小隔间整理的一尘不染,新年新气象,心情也不错。

I

        今天主要总结了几个在工作中经常使用到的知识点,把它们记在里面方便自己查看也加深了记忆。

        1.提取受理数据

        在日常的需求中,很多需要提取受理时的营业厅、受理工号、营业员、号码状态(停、拆)等信息,但是有了在营业厅实习的基础可知,一个号码并不是只为一个用户所用。它在前一任用户拆机后经过若干月就可以重新发放给新用户进行新装。因此我们在数据库中,同一个号码的受理信息可能有很多条,但是我们在处理需求时,应该只提取受理日期最近的那一条信息,所以就需要使用以下语句:

        b.create_date in (select max(c.create_date) from c where a.XXX=c.XXX)

        其中,使用select max(c.create_date)找到最近的受理日期,并通过条件XXX与a表进行关联来获取满足条件的数据。

        2.号码状态

        serv_t表和p_serv_t表都包含号码状态serv_state这个字段,但是serv_t表是受理的数据表,p_serv_t表是竣工的数据表,对于号码状态这个字段,因为受理时的状态很可能并不是该号码最终的状态,所以一般需要提取竣工之后的状态才是准确的。并且由于状态都是用3位字符来表示的,因此在导出清单时,应该向需求人进行适当翻译,例如:

        decode(a.serv_state,'F1A','在网','F1R','拆机')

        由此可以引申出,在数据库中所有用字符串表示的内容,在数据导出时应该翻译成可读性文字。

        3.更新数据

        有时我们已经按照需求内容建好了数据表,但往往后期需求人可能对这份数据需要添加更多字段或修改部分口径等,最直接的方法是删除表格重新做,但对于数据量很大的数据,重新create数据表并插入多表关联的数据是非常耗时的,因此对于改动要求不大的需求,我们可以在原数据后面通过以下语句来更新数据即可,而不需要改动所有的数据。在最后导出数据时,只需将原始列舍去,换成新列内容即可。

        alter table 表名 add (新列名 数据类型……)

        update 表名 a set 新列名=(select 新列名1 from 表名1 b where a.XXX=b.XXX);

D

        在新的一年继续坚持总结工作中的重难点问题或非常巧妙的解决思路,以求提高工作效率。

你可能感兴趣的:(053-20180222-【数据库学习】提取受理数据、号码状态、更新数据)