在拉链表中取出某天为止表中的最新记录
标签:
awkgsub双字段做分区 |
分类: 数据库类 |
业务场景:数据库中有张拉链表,存放了10,11,12,13年的记录,需要找出截止到2011.12.31号其表中的最新记录
注:拉链表即是在表中原有的结构中添加几列字段begin_dt(数据的开始日期),end_dt(数据结束日期),将每天的全量数据文件与前一天数据文件做比对,若前后两天主键相等,但其他字段值不同,则当天的数据文件为NU,前一天的数据文件为OU;若前后两天记录正行记录相等,则为不变的值即S;若当天存在但前一天没有的数据文件为A,若前一天有当当天没有的为删除文件D,将NU,S,A当天的数据文件为最新的记录,其BEGIN_DT为当天,end_dt为29991231(定义为此值的分区存放最新记录),而OU,D为历史记录begin_dt为数据原插入的日期,end_dt为前一天日期。
http://s13/mw690/003d54oKgy6DMhhgmCg8c&690
假设有张拉链表TAB1,其id为主键,值如下:
id
1
1
2
分析:由于需要找出在20111231号那天表中的最新记录,则BEGIN_DT时间应小于等于20111231,但只有这个条件将会把历史记录也查
方法一:
方法二:
或者 awk -F ,
'{if($3<="\"20111231\""&&$4>"\"20111231\"")print
$0 }'
注:gsub(r,s)函数是将记录中的所有r替换成s

加载中…