2016-07-26 140 views
0

我是很新的SQL,所以我很抱歉如果這是一個簡單的問題或者我的代碼不正確。 我有一個數據集(讓我們稱之爲員工數字),我已經有一個查詢。它有2400多個結果。 I'n Oracle 10g上SQL:如果存在值,則返回Y

我有2個問題:

  1. 查詢具有笛卡兒積的問題。我只需要選擇語句中的字段的最近記錄

  2. 我需要查找其中有多少人在表JOB中有一行的值爲REH(重新僱傭)的SYSADM.PS_JOB.ACTION_REASON字段。我不需要從下面的查詢中返回REH記錄信息,只是簡單的Y或N。

我不知道該怎麼做。

這是我的查詢到目前爲止。

SELECT a.paygroup, a.EMPLID, a.FILE_NBR, c.name, e.TLM_STATUS, b.rehire_dt  
as "Emplmnt_Rltd_Dtes-Rehire Date" 
FROM PS_EMPLOYMENT b 

inner join SYSADM.PS_JOB a 
on a.emplid = b.emplid 

inner join SYSADM.PS_PERSONAL_DATA c 
    on a.emplid = c.emplid 

inner join SYSADM.PS_SMS_SUBSCRB_TBL d 
on a.paygroup = d.SUBSCRIBER_ID 

Inner join PORTAL.PS_TS_EMPL_TLM_STATUS e 
    on a.emplid = e.emplid 

where 

b.rehire_dt IS NOT NULL 
and d.EFFDT = (select max (d2.effdt) from PS_SMS_SUBSCRB_TBL d2 where  
    d.SUBSCRIBER_ID = d2.SUBSCRIBER_ID) 
and e.EFFDT = (select max (e2.effdt) from PORTAL.PS_TS_EMPL_TLM_STATUS e2  
    where e.emplid = e2.EMPLID) 
and d.EFF_STATUS <> 'T' 

order by a.paygroup, a.emplid 

感謝您的幫助!

親切的問候, 克雷格

+2

什麼亂七八糟的......右外加入...執行作爲內加入... – jarlh

+0

有趣的是,我原本是將它作爲一個正確的外部連接,但是這並沒有改變結果。 –

+0

連接字段是否是唯一列 –

回答

0

明白了..只是改變了select語句這個

Select a.paygroup, a.EMPLID, a.FILE_NBR, c.name, e.TLM_STATUS, b.rehire_dt as 
"Emplmnt_Rltd_Dtes-Rehire Date", 
    CASE 
    WHEN a.ACTION_REASON = 'REH' THEN 'Y' 
    ELSE 'N' 
    END 
FROM PS_EMPLOYMENT b --no effective dated rows 
相關問題