|
回复 #286 newkid 的帖子
首先,佩服newkid,再一次。
停靠站的选取:
根据车次表的jobday和车次读取停靠站, 限制条件还有flag=0.
生成无号席位时还有station_num-1 > sequence,普通席位则加上母表的BEG_STATION作为条件。
停靠站的选取:在这里是一个辅助功能。一个用于发无号,每个站对经过的车有多少超员数。
一个是,母表里BEG_STATION是个数字,是这个车次的第几站(始发站为0),席位中是该站代码,通过STOP_STATION翻译一下。
生成无号席位时还有station_num-1 > sequence?没有这个条件,所有无号下车站都是最远。
SUBSTR(cycle,MOD(jobday-beg_date, cycle)+1,1) :日期型变量能直接计算?我是变换成整数的JULian类型。
这个母表是:
某一天同时开H6A和H6B(他们都是H6的trainID所谓全车次),某一天不开。
开的这一天是5156,不开的这天是3000多。
H6A是北戴河-石家庄,0:10分开,H6B是秦皇岛到石家庄,23:55开。途中是两天的车,都是H6,始发却是一天。
硬卧上中下,如何发三张的?没看明白。
其他,恕我愚顿,暂时没看懂,慢慢看。
程序有价值,要好好研究。业务逻辑我明白,打死我也写不出这程序。
那个万能的unload,的确高明。但要注意一点,如果数据中有|怎么办?汉字的第二字节是|怎么办?有回车怎么办?NULL是否处理了?
你最后的|没打出来,所以看不出来NULL的处理,应该之后有|的。
这些在我的pack,dispack里都是处理了的,当然也为此付出不少代价。
NLS_DATE_FORMAT='YYYY-MM-DD';这有点不通用,每个字段要求是不同的,我是用了一个PATTERN_COL表记录了每个列的特殊格式要求。你看我那个pre_seat_index数据,当然你也可以这么办,不过程序要复杂一些了。
要注意,seat里的on_date是YYYY-MM-DD HH24:MI,而seat_remant的on_date是YYYY-MM-DD,这有严格要求,我在DAU_copy时自动转换,程序中你看不出来,这就是你批评的玄机,我接受,程序应该注释。另外,DAU_copy的开销非常大,可能达到或超过insert的时间,我可能改为一连串的赋值来代替它。用不用这个东西,看你关心性能还是图省事。
我的程序可以按用户要求各种格式输出,这对你恐怕勉为其难。
[ 本帖最后由 yulihua49 于 2009-3-7 12:46 编辑 ] |
|