Trường hợp có nhiều điều kiện


14

Tôi cần thay đổi giá trị trả về, từ câu lệnh chọn, dựa trên một số điều kiện. Tôi đã thử một cái gì đó như thế:

,CASE i.DocValue
  WHEN 'F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal
  ELSE 0
END as Value

Tại sao nó không hoạt động và cách nào được khuyến nghị để làm điều này? Sẽ có một số điều kiện KHI tiếp theo.

Cảm ơn bạn

Câu trả lời:


24
,CASE WHEN i.DocValue ='F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal
  ELSE 0
END as Value

Có hai loại CASEtuyên bố, ĐƠN GIẢNTÌM KIẾM .

Bạn không thể đánh giá nhiều biểu thức trong một biểu thức trường hợp đơn giản, đó là những gì bạn đã cố gắng thực hiện.

-- Simple CASE expression: 
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
-- Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

Ví dụ về CASE đơn giản:

CASE x
  WHEN 'a' THEN 'b'
  WHEN 'c' THEN 'd'
  ELSE 'z'
END

Ví dụ về CASE được tìm kiếm:

CASE 
  WHEN x = 1 AND y = 2 THEN 'a'
  WHEN x = 2 AND y = 1 THEN 'b'
  ELSE 'z'
END

Đọc thêm: http://msdn.microsoft.com/en-us/l Library / ms181765.aspx


1

Bạn cũng có thể viết như thế này nếu bạn có nhiều yêu cầu:

CASE WHEN CITY='HYDERABAD' THEN       
 CASE WHEN AREA='BHILL' THEN PIN='12345'      
 WHEN AREA='DSNR' THEN PIN='67890'          
 ELSE '33333'          
 END           
END AS PIN_COD

bạn nói đúng, trường hợp lồng nhau cho điều kiện phức tạp cũng hoạt động :)
Muflix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.