第一个:SELECT
A.*,
B.*,
(SELECT count(*) FROM TABLE_A A1 WHERE A1.版本号 = 版本号 AND A1.合同编号 = 合同编号) DUP_CHK
FROM
TABLE_A A,
TABLE_B B
WHERE
A.版本号 = B.版本号
AND A.版本号 = '9999'
AND A.自编号 = B.自编号第二个:SELECT
A.*,
B.*,
C.DUP_CHK
FROM
(SELECT * FROM TABLE_A WHERE 版本号 = '9999') A,
(SELECT * FROM TABLE_B WHERE 版本号 = '9999') B,
(SELECT DISTICT 自编号, count(*) over (partition by 合同编号) DUP_CHK FROM TABLE_A WHERE 版本号 = '9999') C
WHERE
A.自编号 = B.自编号
AND A.自编号 = C.自编号第一个执行速度非常慢,所以把它改成了第二个的样子。第二个运行得飞快,但是改完后有点糊涂,不知道是否完全和原来的等价。TABLE_A和TABLE_B都有版本号和自编号(共通的),
TABLE_A有合同编号等一些合同基本信息,
TABLE_B是合同的明细,对同一合同可能有多条明细.
DUP_CHK是检查该条记录是否存在同一版本号且同一合同编号(重复)请帮忙看一下。thanks.
A.*,
B.*,
(SELECT count(*) FROM TABLE_A A1 WHERE A1.版本号 = 版本号 AND A1.合同编号 = 合同编号) DUP_CHK
FROM
TABLE_A A,
TABLE_B B
WHERE
A.版本号 = B.版本号
AND A.版本号 = '9999'
AND A.自编号 = B.自编号第二个:SELECT
A.*,
B.*,
C.DUP_CHK
FROM
(SELECT * FROM TABLE_A WHERE 版本号 = '9999') A,
(SELECT * FROM TABLE_B WHERE 版本号 = '9999') B,
(SELECT DISTICT 自编号, count(*) over (partition by 合同编号) DUP_CHK FROM TABLE_A WHERE 版本号 = '9999') C
WHERE
A.自编号 = B.自编号
AND A.自编号 = C.自编号第一个执行速度非常慢,所以把它改成了第二个的样子。第二个运行得飞快,但是改完后有点糊涂,不知道是否完全和原来的等价。TABLE_A和TABLE_B都有版本号和自编号(共通的),
TABLE_A有合同编号等一些合同基本信息,
TABLE_B是合同的明细,对同一合同可能有多条明细.
DUP_CHK是检查该条记录是否存在同一版本号且同一合同编号(重复)请帮忙看一下。thanks.
FROM
TABLE_A A,
TABLE_B B
WHERE
A.版本号 = B.版本号
AND A.版本号 = '9999'
AND A.自编号 = B.自编号
修改成
FROM
TABLE_B B,
TABLE_A A
WHERE A.版本号 = '9999'
AND A.版本号 = B.版本号
AND A.自编号 = B.自编号