3,497
社区成员
发帖
与我相关
我的任务
分享
SELECT /*+use_hash(A B C D E F G) PARALLEL(A,2)*/ /*如果运行环境有足够的CPU和内存资源,可以考虑加上大表上的并行度*/
A.ROW_ID ,
--省略一堆 S_DOC_QUOTE的字段,
F.NAME ,
B.TAX_EXEMPT_FLG ,
--省略一堆 S_DOC_ORDER的字段 ,
D.LOGIN ,
(CASE WHEN A.STAT_CD='In Progress' THEN A.CREATED ELSE G.QUOTE_LAST_STAT_DT END) AS QUOTE_LAST_STAT_DT ,
G.CREATED
FROM /*V_DOC_QUOTE */S_DOC_QUOTE A,
LEFT JOIN S_DOC_ORDER B ON A.ROW_ID = B.PAR_ROW_ID
LEFT JOIN S_POSTN C ON A.SALES_REP_POSTN_ID = C.ROW_ID
LEFT JOIN S_USER D ON C.PR_EMP_ID = D.ROW_ID
LEFT JOIN S_PRI_LST E ON A.PRI_LST_ID = E.ROW_ID
LEFT JOIN S_PAYMENT_TERM F ON A.PAYMENT_TERM_ID = F.ROW_ID
LEFT JOIN
(
SELECT /*+use_hash(A B)*/
A.ROW_ID,
A.STAT_CD,
MAX(A.OPERATION_DT) AS QUOTE_LAST_STAT_DT,
MAX(CASE WHEN A.REV_NUM=A.MAX_REV AND B.NEW_VAL='Approved' THEN B.CREATED END) OVER(PARTITION BY A.ROW_ID) AS CREATED
FROM
(
SELECT ROW_ID,
STAT_CD,
REV_NUM,
MAX(REV_NUM) OVER(PARTITION BY QUOTE_NUM) AS MAX_REV
FROM S_DOC_QUOTE
) A
JOIN S_AUDIT_ITEM B ON A.ROW_ID=B.RECORD_ID AND E.BUSCOMP_NAME = 'Quote' AND B.FIELD_NAME='Status'
GROUP BY A.ROW_ID,A.STAT_CD
) G ON A.ROW_ID = G.ROW_ID
SELECT /*+use_hash(A B C D E F G) PARALLEL(A,2)*/ /*如果运行环境有足够的CPU和内存资源,可以考虑加上大表上的并行度*/
A.ROW_ID ,
--省略一堆 S_DOC_QUOTE的字段,
F.NAME ,
B.TAX_EXEMPT_FLG ,
--省略一堆 S_DOC_ORDER的字段 ,
D.LOGIN ,
(CASE WHEN A.STAT_CD='In Progress' THEN A.CREATED ELSE G.QUOTE_LAST_STAT_DT END) AS QUOTE_LAST_STAT_DT ,
G.CREATED
FROM /*V_DOC_QUOTE */S_DOC_QUOTE A,
LEFT JOIN S_DOC_ORDER B ON A.ROW_ID = B.PAR_ROW_ID
LEFT JOIN S_POSTN C ON A.SALES_REP_POSTN_ID = C.ROW_ID
LEFT JOIN S_USER D ON C.PR_EMP_ID = D.ROW_ID
LEFT JOIN S_PRI_LST E ON A.PRI_LST_ID = E.ROW_ID
LEFT JOIN S_PAYMENT_TERM F ON A.PAYMENT_TERM_ID = F.ROW_ID
LEFT JOIN
(
SELECT /*+use_hash(A B)*/
A.ROW_ID,
B.STAT_CD,
MAX(A.OPERATION_DT) AS QUOTE_LAST_STAT_DT,
MAX(CASE WHEN A.REV_NUM=A.MAX_REV AND B.NEW_VAL='Approved' THEN B.CREATED END) OVER(PARTITION BY A.ROW_ID) AS CREATED
FROM
(
SELECT ROW_ID,
REV_NUM,
MAX(REV_NUM) OVER(PARTITION BY QUOTE_NUM) AS MAX_REV
FROM S_DOC_QUOTE
) A
JOIN S_AUDIT_ITEM B ON A.ROW_ID=B.RECORD_ID AND E.BUSCOMP_NAME = 'Quote' AND B.FIELD_NAME='Status'
GROUP BY A.ROW_ID,B.STAT_CD
) G ON A.ROW_ID = G.ROW_ID
SELECT /*+use_hash(A B C D E F G) PARALLEL(A,2)*/ /*如果运行环境有足够的CPU和内存资源,可以考虑加上大表上的并行度*/
A.ROW_ID ,
--省略一堆 S_DOC_QUOTE的字段,
F.NAME ,
B.TAX_EXEMPT_FLG ,
--省略一堆 S_DOC_ORDER的字段 ,
D.LOGIN ,
(CASE WHEN A.STAT_CD='In Progress' THEN A.CREATED ELSE G.QUOTE_LAST_STAT_DT END) AS QUOTE_LAST_STAT_DT ,
G.CREATED
FROM /*V_DOC_QUOTE */S_DOC_QUOTE A,
LEFT JOIN S_DOC_ORDER B ON A.ROW_ID = B.PAR_ROW_ID
LEFT JOIN S_POSTN C ON A.SALES_REP_POSTN_ID = C.ROW_ID
LEFT JOIN S_USER D ON C.PR_EMP_ID = D.ROW_ID
LEFT JOIN S_PRI_LST E ON A.PRI_LST_ID = E.ROW_ID
LEFT JOIN S_PAYMENT_TERM F ON A.PAYMENT_TERM_ID = F.ROW_ID
LEFT JOIN
(
SELECT /*+use_hash(A B)*/
A.ROW_ID,
B.STAT_CD,
MAX(A.OPERATION_DT) AS QUOTE_LAST_STAT_DT,
MAX(CASE WHEN A.REV_NUM=A.MAX_REV AND B.NEW_VAL='Approved' THEN B.CREATED END) OVER(PARTITION BY A.ROW_ID) AS CREATED
FROM
(
SELECT ROW_ID,
REV_NUM,
MAX(REV_NUM) OVER(PARTITION BY QUOTE_NUM) AS MAX_REV
FROM S_DOC_QUOTE
) A
JOIN S_AUDIT_ITEM B ON A.ROW_ID=B.RECORD_ID AND B.FIELD_NAME='Status' AND B.FIELD_NAME='Status'
GROUP BY A.ROW_ID,B.STAT_CD
) G ON A.ROW_ID = G.ROW_ID