如:表A字段money 值为:1000        表B 字段yumoney 值为:50.58
用money - yumoney = 949.42  用存储过程怎么写我是这么写的,但计算出的结果没有小数点
ALTER PROCEDURE ad_viewyumoney
(
@userid int
)
ASdeclare @result money
declare @count money
declare @exist money
SET NOCOUNT ON
begin
  set @count = (select [money] from addvalue where userid = @userid)
  set @exist = (select sum(yumoney)as ymoney from keywords where userid = @userid)
  set @result = @count-@exist
end 
  
SET NOCOUNT OFF RETURN @result

解决方案 »

  1.   

    ALTER   PROCEDURE   ad_viewyumoney 

    @userid   int 

    AS declare   @result   money 
    declare   @count   money 
    declare   @exist   money 
    SET   NOCOUNT   ON 
    begin 
        set   @count   =   (select   [money]   from   addvalue   where   userid   =   @userid) 
        set   @exist   =   (select   sum(yumoney)as   ymoney   from   keywords   where   userid   =   @userid) 
        set   @result   =   cast(@count * 1.0 -@exist  as numeric(12,2))
    end   
        
    SET   NOCOUNT   OFF   RETURN   @result
      

  2.   


    ALTER   PROCEDURE   ad_viewyumoney 

    @userid   int 

    AS declare   @result   money 
    declare   @count   money 
    declare   @exist   money 
    SET   NOCOUNT   ON 
    begin 
        set   @count   =   (select   [money]   from   addvalue   where   userid   =   @userid) 
        set   @exist   =   (select   sum(yumoney)as   ymoney   from   keywords   where   userid   =   @userid) 
        set   @result   =   @count-@exist 
    end   
        
    SET   NOCOUNT   OFF   select   @result
      

  3.   

    谢谢1楼回答: 不过这么写set  @result =  cast(@count * 1.0 -@exist as numeric(12,2)) 结果还是没有小数部分. 
      

  4.   

    还多亏一个朋友,这问题已经解决了,相信很多朋友也遇到同类问题,这只能用函数来实现,试了很多方法都不行,结果都没有小数点.   以下是实现结果的代码
    --数据
    CREATE TABLE T (USERID INT,MONEY MONEY)
    CREATE TABLE TT(USERID INT ,YUMONEY MONEY)INSERT INTO T SELECT 1,1.23
    UNION SELECT 2,2.23INSERT INTO TT SELECT 1,1.25
    UNION SELECT 1,1.56
    UNION SELECT 2,3.23
    UNION SELECT 2,2.56--
    CREATE FUNCTION dbo.ad_viewyumoney1(@userid int)
        RETURNS MONEY
    AS
    BEGIN
            declare @result money
            declare @count money
            declare @exist money
            begin
              set @count = (select [money] from  T where userid = @userid)
              set @exist = (select sum(yumoney)as ymoney  from TT where userid = @userid)
              set @result = @count-@exist
            end 
              
            RETURN @result
    END
    --
    SELECT dbo.ad_viewyumoney1(2)
    ---
    结果
    -3.5600--DROP TABLE T
    --DROP TABLE TT
    --DROP FUNCTION dbo.ad_viewyumoney1