在SQL中减去变量

Koc*_*ran 2 sql sql-server sql-server-2008

如何减去两个变量中的值.这是我到目前为止所做的

DECLARE @A NVARCHAR(MAX)
DECLARE @B NVARCHAR(MAX)

SET @A='select count(abc)
 from x'
 EXEC (@A)
 PRINT @A

 SET @B= ' select count(xyz)
 from  y'

 EXEC (@B)
 PRINT @B

 DECLARE @C INT
 SET @C = CAST(@A AS INT) - CAST(@B AS INT)
 EXEC (@C)
 PRINT @C
Run Code Online (Sandbox Code Playgroud)

我收到转换错误

消息
转换nvarchar值时,消息245,级别16,状态1,行20 转换失败

Lam*_*mak 7

当然,您会收到转换错误,因为该变量是一个字符串.即使字符串是查询,如果执行它,也不会将结果存储回变量.你需要做的是:

DECLARE @A INT, @B INT, @C INT;

SELECT @A = COUNT(abc)
FROM x;

SELECT @B = COUNT(xyz)
FROM y;

SET @C = @A - @B;
Run Code Online (Sandbox Code Playgroud)