2015-12-14 154 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(+)