触发器中得到的数据保留两位小数

zhousq00 2010-07-03 03:14:00

--list表触发器()
CREATE trigger OnListUpdate
on dbo.Js_WorldCupList
For Update
as
begin

IF SUBSTRING(COLUMNS_UPDATED(),2,1)&1=1
begin
DECLARE @winCount int
DECLARE @AppendScore int

--先算出附加分
select @winCount = count(*) FROM dbo.Js_WorldCupGuess a join inserted b on a.CID = b.ID where a.[Guess] = b.Result
print @winCount
select @AppendScore = (case when @winCount > 0 then Convert(Numeric(7,2),count(*))/Convert(Numeric(7,2),@winCount) else 0.00 end)
--(关键地方:得到保留两位小数的数)
FROM dbo.Js_WorldCupGuess a join inserted b on a.CID = b.ID

--更新表
Update dbo.Js_GuessScore set [LastScore] = (case when b.Result = b.Guess then a.[LastScore]+1 else 0 end),
[Score] = Convert(Numeric(7,2),(case when b.Result = b.Guess then Convert(Numeric(7,2),(a.[Score] + @AppendScore + a.[LastScore] + 1))
else Convert(Numeric(7,2),a.[Score]) end))
--需要得到的[Score]是有两位小数的数
FROM dbo.Js_GuessScore a
inner join (select [TelNum],[Guess],[Result] from inserted c left join dbo.Js_WorldCupGuess d on d.CID = c.ID) b on b.[TelNum] = a.[TelNum]
end
end

写的一个触发器,希望得到的[Score]是有两位小数的,
但是不管我怎么转换,得到的老是整数,希望高人们帮我看看问题在哪
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerry_zrui 2010-07-03
  • 打赏
  • 举报
回复
DECLARE @winCount int
DECLARE @AppendScore int
这两句的问题吧,是int类型,结果当然是整数了
TheGodOfGods 2010-07-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xys_777 的回复:]
都做了转换,难道
print @AppendScore 这个不是小数
[/Quote]

DECLARE @AppendScore int

当然不是小数。
把这改了再试试
CZP98168 2010-07-03
  • 打赏
  • 举报
回复
检查一下表结构中是怎么定义的
永生天地 2010-07-03
  • 打赏
  • 举报
回复
都做了转换,难道
print @AppendScore 这个不是小数
claro 2010-07-03
  • 打赏
  • 举报
回复
数据呢?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧