2011-12-16 30 views
7

Đây có thể là một câu hỏi đơn giản, nhưng đó là câu hỏi mà tôi chưa từng thấy trước đó. Có cách nào để sử dụng điều kiện của tuyên bố nếu là giá trị của nó không? Điều này sẽ thực sự hữu ích trong trường hợp có nhiều phép tính được thực hiện để xác định xem một điều kiện nhất định có được đáp ứng hay không và nếu có, thì tính toán đó là kết quả.Có cách nào để sử dụng điều kiện của câu lệnh If làm giá trị của nó không?

Như một ví dụ:

if ([intense calculation] > 0, [same intense calculation], 0) 

Tôi quan tâm đặc biệt liên quan đến SQL, như tôi đang làm việc trên một bản báo cáo trong Access ngay bây giờ và vì vậy không thể lưu trữ các kết quả của việc tính toán cường độ cao trong một biến số.

Trả lời

6

Không chắc chắn nếu một khái niệm như vậy tồn tại trong báo cáo thế giới MS Access, nhưng làm thế nào về:

MAX([intense calculation], 0)

Lợi ích rõ ràng của một cách tiếp cận như vậy là việc tính toán sẽ chỉ cần phải được thực hiện một lần.

+0

Và nếu bạn muốn có một giá trị mặc định trong trường hợp biến là NULL có NVL (trong oracle) và co - sadly tất cả mọi người thích gọi là một khác nhau nhưng vẫn cực kỳ hữu ích và tôi nghĩ rằng mỗi DBMS có một cái gì đó như thế. – Voo

+0

và điều gì sẽ xảy ra nếu cường độ dữ liệu thấp hơn 0? – mkk

+0

@mkk, kết quả là 0, giống như câu lệnh IF của poster. –

0

Một cách tiếp cận trong hầu hết các hình thức SQL sẽ được di chuyển truy vấn chính để một phụ truy vấn, với các cột tính dữ dội aliased và thử nghiệm trong truy vấn bên ngoài mới - như vậy:

select v.*, 
     case intense_calc > 0 then intense_calc else 0 end as positive_calc 
from (select [intense calculation] as intense_calc, 
      [other columns] 
     from ...) as v 
+0

Yup, tôi nghĩ đây là con đường để đi. Tôi đã suy nghĩ về cách làm theo cách này, nhưng muốn xem có thể có một số cú pháp tối nghĩa mà tôi không biết về điều đó có thể tham chiếu đến điều kiện không. Cảm ơn! – Will

Các vấn đề liên quan