UPDATE HR_KQTempForDayCount
SET FTIMEA1=(CASE
WHEN ITIME1 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME1),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME1),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME1
WHEN ITIME2 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME2),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME2),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME2
WHEN ITIME3 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME3),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME3),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME3
WHEN ITIME4 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME4),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME4),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME4
WHEN ITIME5 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME5),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME5),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME5
WHEN ITIME6 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME6),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME6),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME6
WHEN ITIME7 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME7),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME7),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME7
WHEN ITIME8 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME8),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME8),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME8
WHEN ITIME9 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME9),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME9),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME9
WHEN ITIME10 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME10),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME10),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME10
END )
WHERE OSTTIME_A1 IS NOT NULL AND STTIME_ADDYN1='Y' AND NCLASS>0
;像这样写法是不是速度比较慢???有高手指点一下,用哪种方法可以代替这种方法!!谢谢
这里主要是用case ;分别用itime1..itime10与某个范围进行比较.
SET FTIMEA1=(CASE
WHEN ITIME1 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME1),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME1),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME1
WHEN ITIME2 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME2),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME2),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME2
WHEN ITIME3 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME3),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME3),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME3
WHEN ITIME4 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME4),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME4),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME4
WHEN ITIME5 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME5),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME5),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME5
WHEN ITIME6 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME6),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME6),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME6
WHEN ITIME7 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME7),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME7),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME7
WHEN ITIME8 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME8),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME8),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME8
WHEN ITIME9 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME9),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME9),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME9
WHEN ITIME10 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME10),'YYYY-MM-DD HH24:Mi:Ss')>=
(TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_AN1/24/60))
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME10),'YYYY-MM-DD HH24:Mi:Ss')<
TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),STTIME_B1),'YYYY-MM-DD HH24:Mi:Ss')-(STTIME_BN1/24/60) THEN ITIME10
END )
WHERE OSTTIME_A1 IS NOT NULL AND STTIME_ADDYN1='Y' AND NCLASS>0
;像这样写法是不是速度比较慢???有高手指点一下,用哪种方法可以代替这种方法!!谢谢
这里主要是用case ;分别用itime1..itime10与某个范围进行比较.
IT技术挺全的,不错,鼓励一下:http://www.ciitc.com
它和SQLSERVER2000执行的SQL机制是一样的吗?比如:
WHEN ITIME1 IS NOT NULL AND OSTTIME_A1 IS NOT NULL
AND TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME1),'YYYY-MM-DD HH24:Mi:Ss')>= (TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')- (STTIME_AN1/24/60))
条件一:ITIME1 IS NOT NULL
条件二:OSTTIME_A1 IS NOT NULL
条件三:TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),ITIME1),'YYYY-MM-DD HH24:Mi:Ss')>= (TO_DATE(Hr_Time48to24(TO_CHAR(KQDATE,'YYYY-MM-DD'),OSTTIME_A1),'YYYY-MM-DD HH24:Mi:Ss')- (STTIME_AN1/24/60))在 oracle执行SQL顺序是不是先条件三,条件二,再条件一???
还是倒回来??
为什么不用程序或存储过程得出要更新的值,一个sql不见得就好
,既然外围的条件已经包含了 OSTTIME_A1 IS NOT NULL ,则内层就不要再加这个,浪费CPU.
至于其它的方式,最直接的就是条件分解,但是要考虑分解之后的成本(这和你的数据库设计是密切相关的)