这是我们一位蛮牛比的人做的,只是平常的一个,他几乎上能把所有的,业务逻辑集成到SQL查询语句中。
虽说,我不是很赞成他这种做法,但是他的SQL值得学习。
select
distinct a.student_no,
a.dm_cd,
a.post_date_plan,
a.order_flg,
case when substr(a.dm_cd,6,1) in ('1','2')then 1
when substr(a.dm_cd,6,1)in ('S','X','J','L')then 2 end as regularflag,
case when a.post_date_plan +7>=sysdate then 1 else 0 end as newFlag,
'Z'as rank
from
tbl_dmrecord a
where
a.student_no='***' and
a.order_flg=0 and
a.post_date_plan<sysdate and
substr(a.dm_cd,6,1) in ('1','2','S','X','J','L') and
substr(a.dm_cd,1,1) not in ('V','X') and
a.del_date is null
order by a.post_date_plan desc
输出结果:
STUDENT_NO DM_CD POST_DATE_PLAN ORDER_FLG REGULARFLAG NEWFLAG RANK
1 *** DY101221 2006/08/07 0 1 1 Z
2 *** HY102L11 2006/08/07 0 2 1 Z
3 *** AY100103 2006/08/07 0 1 1 Z
……