Tôi muốn thực hiện phép tính số học dựa trên các giá trị cột của tôi. Hãy xem xét ví dụ sau quảSố học/Thao tác logic dựa trên giá trị Cột
CREATE TABLE #test
(
cont_sal INT,
check_value INT,
operator VARCHAR(50)
)
INSERT #test
VALUES (10,20,'+'),
(20,10,'+'),
(10,20,'-'),
(20,10,'-')
dự kiến:
cont_sal check_value result
-------- ----------- ------
10 20 30
20 10 30
10 20 -10
20 10 10
tôi có thể làm bằng CASE
tuyên bố này.
SELECT cont_sal,
check_value,
CASE
WHEN operator = '+' THEN cont_sal + check_value
when operator = '-' THEN cont_sal - check_value
END result
FROM #test
Nhưng có cách nào để thực hiện điều này một cách linh hoạt hay không. Nhà điều hành có thể là bất cứ điều gì như /
, %
, *
. Một cái gì đó như thế này
DECLARE @sql NVARCHAR(max)=''
SET @sql = 'select cont_sal ' + 'operator'
+ ' check_value from #test '
--PRINT @sql
EXEC Sp_executesql
@sql
Mà rõ ràng đã không làm việc nói
Msg 102, Level 15, State 1, Line 1 cú pháp sai gần 'check_value'.
Sử dụng các biểu CASE' '. Nó sẽ là đơn giản nhất để giải thích. –
Bạn có nghĩa là 'SET @sql = 'chọn cont_sal' + @op + 'check_value từ #test'' .. – Deepshikha
@Mini - Mỗi hàng sẽ có toán tử riêng vì vậy chúng tôi không thể sử dụng biến –