2013-02-22 37 views
7

Tôi tự hỏi nếu có khả năng đạt được một số điều nhưif-elseif-else 'điều kiện' trong oracle SQL

'if-elseif-else' condition, tôi biết có 'trường hợp khi nào thì -xỉ 'nhưng nó chỉ kiểm tra một điều kiện tại một thời điểm (nếu tôi hiểu nó một cách chính xác). Làm thế nào tôi có thể đạt được kịch bản if-elseif-else trong Oracle sql

+1

Báo cáo CASE lồng nhau là một tùy chọn. Tôi không quen thuộc với Oracle để biết nếu có một cách tốt hơn mặc dù. –

+0

Bạn có ý gì bởi _it chỉ kiểm tra một điều kiện tại một time_ Vì câu lệnh case nên giúp..không được sử dụng giải mã nhưng nó chỉ kiểm tra bình đẳng – asifsid88

+0

Xem http://stackoverflow.com/questions/14386881/using-if- else-in-oracle – glh

Trả lời

17

Bạn có thể sử dụng if/else sử dụng trường hợp báo cáo như t của anh ấy.

SELECT ename, CASE WHEN sal = 1000 THEN 'Minimum wage' 
        WHEN sal > 1000 THEN 'Over paid' 
        ELSE 'Under paid' 
       END AS "Salary Status" 
FROM emp; 
1

tôi biết có một 'trường khi-then-else' nhưng nó sẽ kiểm tra chỉ có một điều kiện tại một thời điểm

Những gì bạn đang mô tả là một trường hợp đơn giản. Oracle có hai loại trường hợp: ĐƠN GIẢN và tìm kiếm (xem ở đây để biết thêm http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm)

SIMPLE

case A 
    when 1 then 'foo' 
    when 2 then 'bar' 
    else .. 
end 

tìm kiếm

case 
    when A=1 and B='A' then 'foo' 
    when D + C =1 and B !='A' then 'Bar' 
    else .. 
end 

có thể bạn muốn sử dụng một trường hợp tìm kiếm. Bạn có thể sử dụng chúng trong PL/SQL hoặc SQL. ví dụ: trong SQL

select .. 
    from table 
where case 
     when A=1 and B='A' then 'foo' 
     when D + C =1 and B !='A' then 'Bar' 
     else .. 
     end = 'foo' 
+0

Tôi đã sử dụng một số điều như thế này nhưng nó không hoạt động – user964147

+0

có tôi cần tìm kiếm trường hợp – user964147