0

SQL、Oracle -- Status = 'SO' または Status が Null の場合、テーブルからレコードを取得しようとしています。Status = 'SO' の場合にのみレコードを取得できます。Null の場合は、プル元の場所が空であることを意味するため、そこには何も表示されません。それはまるで、本に白紙のページを見つけたら教えてくれるように誰かに頼むようなものですが、白紙なので実際に見るページはありませんが、本はまだ存在しています。ページに「SO」があれば、それを見つけることができます。

DGMR_DEGS_CODE は、PN、AW、SO、または空白 (何も存在しない) のいずれかです。

Select distinct sp.sprite_id as "ID", SP.SPRITE_LAST_NAME as "Last", SP.SPRITE_FIRST_NAME as "First", 
sh.TRAN_REQUEST_DATE as "Request Date",
NL.DGMR_DEGS_CODE as "Null Dgr",
SV.RSTS_ENRL as "Enrolled?",
sf.stcr_term_code as "Term",
sysdate as "Current Date"


from Sprite SP

join TRAN SH 
on sp.sprite_pid = sh.tran_pid 

full outer join DGMR NL
on NL.DGMR_pid = sp.sprite_pid

join stcr sf
on sp.sprite_pid = sf.stcr_pid
JOIN stvrsts SV 
on SF.STCR_RSTS_CODE = SV.STVTS_CODE 

where 
Sp.sprite_change_ind is null

and sh.TRAN_REQUEST_DATE between sysdate-1 and sysdate
and (sf.stcr_term_code = '201401' or sf.stcr_term_code = '201402')
AND SV.RSTS_ENRL = 'Y'
AND (NL.DGMR_DEGS_CODE is null or NL.DGMR_DEGS_CODE = 'SO' )
--and (length(NL.DGMR_DEGS_CODE)=0 or NL.DGMR_DEGS_CODE = 'SO' )
--and NL.DGMR_DEGS_CODE <> 'PN'
--and NL.DGMR_DEGS_CODE <> 'AW'
--and NL.DGMR_DEGS_CODE <> 'PN' and NL.DGMR_DEGS_CODE <> 'AW'

NL.DGMR_DEGS_CODE の基準を含めない場合、25 のレコードが選択されます。これらのレコードには、SO、AW、PN、および NULL レコードが含まれます!! 条件を含めると、NULL レコードはプルされません。SO または Null を要求すると、SO レコードのみが選択されます。

4

1 に答える 1

0

誰もこれに答えなかったので、同様の問題を抱えている可能性のある他の人に答えを提供したいと思います。フィールドは「非 null」だったので、null にするために TRIM を実行する必要がありました。

最後の行を置き換えました。

where 
Sp.sprite_change_ind is null
and sh.TRAN_REQUEST_DATE between sysdate-1 and sysdate
and (sf.stcr_term_code = '201401' or sf.stcr_term_code = '201402')
AND SV.RSTS_ENRL = 'Y'
and trim(NL.DGMR_DEGS_CODE) is null
于 2014-09-23T20:53:58.417 に答える