2016-07-26 24 views
0

私はSQLにはまったく新しいので、これが簡単なのか、自分のコードが適切でない場合はお詫び申し上げます。 私はすでにクエリを持っているデータセット(従業員番号と呼ぶ)を持っています。それは2400以上の結果を持っています。SQL:値がある場合はYを返します

  1. クエリはデカルト積の問題があります:Oracle 10gの

    上I'n Iは、2つの問題があります。 select文のフィールドから最新のレコードのみが必要です

  2. SYSADM.PS_JOB.ACTION_REASONフィールドにREH(rehire)の値を持つテーブルJOBの行がいくつあるか調べる必要があります。 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

何混乱にselect文を変更..それを手に入れた右外部結合...など内部結合を実行... – jarlh

+0

面白いことに、私は最初は右外部結合としてそれを持っていましたが、それは結果を変更しませんでした。 –

+0

結合フィールドは一意の列です –

答えて

0

クレイグが...ちょうどこの

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 
関連する問題