awk处理案例二十--实现oracle分析函数之lag

【场景】

有个如下结果的表
xm            rq              mdd
张三       2013.10.01    山东
张三       2013.10.05    江苏
张三       2013.10.10    云南
李四       2013.10.07    安徽
李四       2013.10.10    上海
---------------------------------------------------------------------------
想产生一个如下结果


姓名  日期                目的地   来自这里
张三   2013.10.01       山东       NULL
张三   2013.10.05       江苏       山东
张三   2013.10.10       云南       江苏
李四   2013.10.07       安徽       NULL
李四   2013.10.10       上海       安徽

 【实现】用SQL实现语句如下:

SELECT xm,rq,mdd,Lag(mdd, 1, ' ') Over (partition by xm Order By rq) from  t

但是用awk实现更简洁点

【代码如下】

awk '{print a[$1]?$0,a[$1]:$0,"NULL";a[$1]=$3}' file

【总结】

  对于文本处理,数据处理。awk的功能很强大;有点类似是linux中的“函数”

posted @ 2013-12-03 21:41  lottu  阅读(362)  评论(0)    收藏  举报