0

以下是我正在尝试执行的查询,它需要永远执行。

SELECT DISTINCT (CLN_CLNDR_DT)FROM CLN_CLNDR CLN,
SYG_SYSTEM_GLOBALS SYG,CTD_CSH_TRNSCTN_DTLS CTD WHERE CLN.CLN_BP_ID = SYG.SYG_BP_ID AND CLN.CLN_ENTITY_ID = CTD.CTD_ENTITY_ID AND CLN_DT_SEQ_NUM  
IN 
 (SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM) 
 FROM CLN_CLNDR CLN1,
 SBD_SYS_BSNS_DTS SBD,
 SYG_SYSTEM_GLOBALS SYG,
 CTD_CSH_TRNSCTN_DTLS CTR
WHERE SBD.SBD_BSNS_DT  = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID         = SBD.OU_ID
AND CLN1.CLN_BP_ID     = SYG.SYG_BP_ID
AND CLN1.CLN_ENTITY_ID = CTR.CTD_ENTITY_ID
);

当我尝试仅在in 中运行查询时,它很容易将结果返回为 (522,470,419,417,553,582,305,361)

SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM) 
 FROM CLN_CLNDR CLN1,
 SBD_SYS_BSNS_DTS SBD,
 SYG_SYSTEM_GLOBALS SYG,
 CTD_CSH_TRNSCTN_DTLS CTR
WHERE SBD.SBD_BSNS_DT  = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID         = SBD.OU_ID
AND CLN1.CLN_BP_ID     = SYG.SYG_BP_ID
AND CLN1.CLN_ENTITY_ID = CTR.CTD_ENTITY_ID;

此外,当我尝试直接执行完整查询时,将块内的查询替换内部查询的结果(522,470,419,417,553,582,305,361),

它工作正常。

因为我是新手,所以我不知道发生了什么。请帮我解决一下这个。

4

1 回答 1

0

我认为您不需要子查询中的所有表,因为您已经在使用它们来过滤外部查询中的行。尝试这个:

SELECT DISTINCT (CLN_CLNDR_DT)
FROM CLN_CLNDR CLN,
SYG_SYSTEM_GLOBALS SYG,
CTD_CSH_TRNSCTN_DTLS CTD 
WHERE CLN.CLN_BP_ID = SYG.SYG_BP_ID 
AND CLN.CLN_ENTITY_ID = CTD.CTD_ENTITY_ID 
AND CLN_DT_SEQ_NUM  
IN 
 (SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM) 
 FROM CLN_CLNDR CLN1,
 SBD_SYS_BSNS_DTS SBD,
WHERE SBD.SBD_BSNS_DT  = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID         = SBD.OU_ID
);
于 2014-08-14T16:11:29.777 回答