2014-01-24 330 views
3

對不起,我是PL/SQL forad for Oracle的新手。我有一個簡單的問題。我需要在表格「JTF_RS_DEFRESOURCES_VL」中找到一些列名,我用這個腳本來做。只是一個示例列。Select語句和If/else語句

SELECT column1, 
     column2, 
     column3, 
     column4, 
     column5, 
     end_date_active 
FROM jtf_rs_defresources_vl 

然後我想用「if else語句」,如果END_DATE_ACTIVE = null,那麼它是活動的,否則它是非活動的。

+0

http://stackoverflow.com/a/9581790/139010 –

回答

2

這聽起來像你想有一個CASE語句

SELECT (CASE WHEN end_date_active IS NULL 
      THEN 'Active' 
      ELSE 'Inactive' 
     END) status, 
     <<other columns>> 
    FROM jtf_rs_defresources_vl 
+0

非常感謝你的先生。你能解釋一下「case」的用法嗎? –

+1

case語句將比較表達式 –

+1

@DontStopLearning - 'CASE'是您在SQL中實現IF/THEN邏輯的方式。 'IF'語句在PL/SQL中有效,但不在SQL中。 –

1

可以使用CASE表達喜歡@Justin建議,但在Oracle中有一個較簡單的功能 - NVL2。它收到三個參數並評估第一個參數。如果不是null則返回第二個參數,如果是,則返回第三個參數。

所以你的情況:

SELECT NVL2(end_date_active, 'Active', 'Inactive') AS status, 
     <<other columns>> 
    FROM jtf_rs_defresources_vl 
+0

我試過它也先生,它的工作原理!謝謝! :) –

0
select case end_date_active 

    when is null then 'ACTIVE', 

    else 'INACTIVE' 

    end as 'STATUS' 

從jtf_rs_defresources_vl;

+1

你應該開發你的答案,而不是張貼一個無法解釋的答案。 –