SQL Server 计算列

6

我有两列数据,都是整数类型,分别为WinsLosses。我需要计算一个列WinPercentage,它的类型是decimal(14,3),我希望它的值为:

WinPercentage = (Wins + Losses) / Wins

那个的语法是什么?


2
我认为WinPercentage应该是100.0 * Wins / (Wins + Losses)。确保使用100.0以避免整数运算。 - George Mastros
2个回答

7
CREATE TABLE WinLoss
(
 TeamId int IDENTITY(1,1) NOT NULL,
 Wins int,
 Losses int,
 WinPercentage AS CASE WHEN wins > 0 THEN (Wins + Losses) / Wins ELSE 0 END
)

如果我只是将这个放入列属性工具箱中,那么我只需要在“AS”之后输入所有内容吗? - Scott
1
@Scott .... 是的,我相信是这样的.... 我已经远离使用设计工具,因为当我自己输入代码时,我可以更清楚地看到发生了什么。但是,是的,我相信你是正确的。 - John Hartsock
2
你想要检查胜利值,或者在选择记录时冒着除以零的错误风险 - 插入操作可以正常工作。 - OMG Ponies
如果Wins为0,我该如何检查并将列设置为0。 - Scott
@Scott请看编辑后的答案...OMG Ponies编辑了答案。 - John Hartsock

0
创建一个计算列到已存在的表中,然后使用"ALTER TABLE"命令。
胜率的计算公式为: 胜率 = (胜利次数 / (胜利次数 + 失败次数)) * 100
当胜利次数和失败次数的总和为0时,使用NULLIF函数来避免除以零的问题。
ALTER TABLE [Win Loss Percentage] ADD WinPercentage AS (CONVERT(decimal(5, 2), (胜利次数 * 100.0 / NULLIF((胜利次数 + 失败次数), 0)))) PERSISTED;
希望对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接