select @MoneyAvailable = a.Vstock_TotalMoney - SUM(b.BuyPrice * b.BuyVol) - SUM(b.BuyTax) - SUM(b.BuyFee) 
from dbo.aspnet_Users a 
inner join dbo.aspnet_Vstock_BuyOrder b
on a.UserId = @UserId and  b.UserId = a.UserId怎么加 group by啊?!另外,上面的可不可以写成 ,都写在一个sum中?! select @MoneyAvailable = a.Vstock_TotalMoney - SUM(b.BuyPrice * b.BuyVol + b.BuyTax + b.BuyFee) 
from dbo.aspnet_Users a 
inner join dbo.aspnet_Vstock_BuyOrder b
on a.UserId = @UserId and  b.UserId = a.UserId

解决方案 »

  1.   

    你可以这样写
    select @MoneyAvailable=sum(Vstock_TotalMoney)
    from dbo.aspnet_Usersselect @MoneyAvailable = @MoneyAvailable - SUM(b.BuyPrice * b.BuyVol) - SUM(b.BuyTax) - SUM(b.BuyFee) 
    from dbo.aspnet_Users a 
    inner join dbo.aspnet_Vstock_BuyOrder b
    on a.UserId = @UserId and b.UserId = a.UserId
      

  2.   

    试试这个。
    select  a.UserId,@MoneyAvailable = SUM(a.Vstock_TotalMoney - (b.BuyPrice * b.BuyVol + b.BuyTax + b.BuyFee) )
    from dbo.aspnet_Users a 
    inner join dbo.aspnet_Vstock_BuyOrder b
    on a.UserId = @UserId and b.UserId = a.UserId
    GRoup by  a.UserId
      

  3.   

    我 不需要  SUM(a.Vstock_TotalMoney)!!! 因为这只是一个单独用户的!
      

  4.   

    select @MoneyAvailable=(
    a.Vstock_TotalMoney-
    (select SUM(b.BuyPrice * b.BuyVol) from dbo.aspnet_Vstock_BuyOrder b where b.UserId = a.UserId)-
    (select SUM(b.BuyTax) from dbo.aspnet_Vstock_BuyOrder b where b.UserId = a.UserId)-
    (select SUM(b.BuyFee) from dbo.aspnet_Vstock_BuyOrder b where b.UserId = a.UserId)
    )
    from dbo.aspnet_Users a 
    where a.UserId = @UserId你这个要用子查询来做。
      

  5.   

    select @MoneyAvailable=Vstock_TotalMoney
    from dbo.aspnet_Users where UserId = @UserIdselect @MoneyAvailable = @MoneyAvailable - SUM(b.BuyPrice * b.BuyVol) - SUM(b.BuyTax) - SUM(b.BuyFee) 
    from dbo.aspnet_Users a 
    inner join dbo.aspnet_Vstock_BuyOrder b
    on a.UserId = @UserId and b.UserId = a.UserId
      

  6.   

    貌似 group by  Vstock_TotalMoney 就可以了?! 这样可以吧?! update dbo.aspnet_Users set Vstock_TotalMoney = Vstock_Available from 
    (select  c.Vstock_TotalMoney 
    -  sum(isnull((case when b.BuyPrice = 0 then a.NewPrice else b.BuyPrice end)  * b.BuyVol,0)) 
    -  sum(isnull((case when b.BuyPrice = 0 then a.NewPrice else b.BuyPrice end)  * b.BuyVol * d.BuyTax,0))
    -  sum(isnull((case when b.BuyPrice = 0 then a.NewPrice else b.BuyPrice end)  * b.BuyVol * d.BuyFee,0))
    as Vstock_Available, c.UserId as C_UserId from #PriceTable a
    inner join dbo.[aspnet_Vstock_BuyOrder] b on a.MarketId = b.MarketId and (a.[StockId]) = (b.[StockId]) and (b.BuyPrice >= a.NewPrice or b.BuyPrice = 0 )
    inner join dbo.[aspnet_Users] c on b.UserId = c.UserId
    inner join dbo.[aspnet_Vstock_Groups] d on c.Vstock_GroupId = d.Id 
    group by c.Vstock_TotalMoney, c.UserId) z where UserId = z.C_UserId