当前位置: 代码迷 >> Sql Server >> 关于变量赋值有关问题:要查找的字段为numeric类型,如果有null则先用isnull函数将其赋值为'0'然后再将其赋值给变量,但是就出错了,求指导
  详细解决方案

关于变量赋值有关问题:要查找的字段为numeric类型,如果有null则先用isnull函数将其赋值为'0'然后再将其赋值给变量,但是就出错了,求指导

热度:53   发布时间:2016-04-25 00:56:12.0
关于变量赋值问题:要查找的字段为numeric类型,如果有null则先用isnull函数将其赋值为'0'然后再将其赋值给变量,但是就出错了,求指导
在R表中有如下字段:Amt(numeri类型)、Reb(numeric类型)、id(nvarchar类型)、name(nvarchar类型)从R表中查找符合条件的Amt和Reb如果有字段为NULL则用isnull转换为0,然后再赋值给变量@Amt和@Reb,代码如下:

Declare @Amt
Declare @Reb
select @Amt = Amt,isnull(Amt,0) as Amt,@Reb = Reb,isnul(Reb,0) as Reb from R where id = '1010101' and name = 'GT'
print @Amt
print @Reb

然后就出错了,请问怎么改正?
------最佳解决方案--------------------
SELECT  @Amt1 = ISNULL(Amt, 0) ,
        @Reb1 = ISNULL(Reb, 0)
FROM    R
WHERE   id = '10001'
 
 
SELECT  @Amt2 = ISNULL(Amt, 0) ,
        @Reb2 = ISNULL(Reb, 0)
FROM    R
WHERE   id = '10002'


SELECT  @Amt3 = ISNULL(Amt, 0) ,
        @Reb3 = ISNULL(Reb, 0)
FROM    R
WHERE   id = '10003'


SELECT  @Amt4 = ISNULL(Amt, 0) ,
        @Reb4 = ISNULL(Reb, 0)
FROM    R
WHERE   id = '10004'
SELECT  @Amt1 + @Amt2 + @Amt3 + @Amt4

------其他解决方案--------------------
引用:
在R表中有如下字段:Amt(numeri类型)、Reb(numeric类型)、id(nvarchar类型)、name(nvarchar类型)从R表中查找符合条件的Amt和Reb如果有字段为NULL则用isnull转换为0,然后再赋值给变量@Amt和@Reb,代码如下:
SQL code?123456Declare @AmtDeclare @Rebselect @Amt ……


申明变量:
Declare @Amt 变量类型
Declare @Reb 变量类型

你少了类型
------其他解决方案--------------------
[quote=引用:]
申明变量:
 Declare @Amt 变量类型
 Declare @Reb 变量类型
 
你少了类型 
[quote]

版主,这不是错误所在,额,也是一个错误,但我加上类型仍然出错,有错误提示:
消息 141,级别 15,状态 1,第 3 行
向变量赋值的 SELECT 语句不能与数据检索操作结合使用。

这是加上类型后,仍然有错误!
------其他解决方案--------------------
引用:
[quote=引用:]
申明变量:
 Declare @Amt 变量类型
 Declare @Reb 变量类型
 
你少了类型 
[quote]

版主,这不是错误所在,额,也是一个错误,但我加上类型仍然出错,有错误提示:
消息 141,级别 15,状态 1,第 3 行
向变量赋值的 SELECT 语句不能与数据检索操……

Declare @Amt
Declare @Reb
select @Amt = isnull(Amt,0)t,@Reb =isnul(Reb,0) from R where id = '1010101' and name = 'GT'
print @Amt
print @Reb

------其他解决方案--------------------
引用:
引用:[quote=引用:]
申明变量:
 Declare @Amt 变量类型
 Declare @Reb 变量类型
 
你少了类型 
[quote]

版主,这不是错误所在,额,也是一个错误,但我加上类型仍然出错,有错误提示:
消息 141,级别 15,状态 1,第 3 行
向……


你还得加上类型

------其他解决方案--------------------
  相关解决方案