2015-12-14 158 views
0

我有一个select语句写入表,即STAY表,其中有2个日期字段,即ADMSN_DT和DSCHRG_DT不可用。所以我被告知通过加入claim_id从另一个名为CLM表的表中获取这些字段。select语句在另一个select语句中的字段 - oracle

所以我陷害我的选择查询的,

select 
Member_id as MemberID, 
(select a.ADMSN_DT from CLM a, STAY b where a.cl_id = b.claim_id) as Admission_Date, 
(select a.DSCHRG_DT from CLM a, STAY b where a.cl_id = b.claim_id) as Discharge_Date, 
field 1, 
feild 2, such as ... some fields from STAY table 
from STAY; 

这里的问题是我从这个表中得到了2所记载,claim_id是不同的,但我得到了两个记录相同的日期。

对于如: -

Claim_id Admission_date Discharge_date 
1234   11/12/2015  12/12/2015   -- this claim id has dates in clm table 
5678   11/12/2015  12/12/2015   -- this claim id has no dates in clm table 

它只是复制从第一条记录相同的值到第二个记录。如何避免这种情况?任何帮助深表感谢。

谢谢!

回答

1

请尝试以下查询;

select Member_id as MemberID, (select a.ADMSN_DT from CLM a where a.cl_id = s.claim_id) as Admission_Date, (select a.DSCHRG_DT from CLM a where a.cl_id = s.claim_id) as Discharge_Date from STAY s;

1

你的代码,使子查询等结果从封闭查询返回

试试这个结果之间的笛卡尔积: select Member_id as MemberID, a.ADMSN_DT as Admission_Date, a.DSCHRG_DT as Discharge_Date, field 1, feild 2, ... from STAY b, CLM a where a.cl_id = b.claim_id(+)