我正在研究SQL Server 2014上的存储过程。
我有一个变量:
DECLARE @VersionNumber DECIMAL(18,1);
此VersionNumber可以包含1.0或1.4等值。
在我的逻辑中,如果有次要更改, +0.1 ,如果有,则增加 +1 重大改变。
如果有重大变化,我想将结尾数字重置为0.
示例:版本1.4应在重大更改后变为2.0
我当前的查询如下所示:
IF @IsMajor = 'true'
BEGIN
SELECT @VersionNumber = COALESCE(1 + MAX([VersionNumber]), 1)
FROM [MySchema].[Project]
END
IF @IsMajor = 'false'
BEGIN
SELECT @VersionNumber = COALESCE(0.1 + MAX([VersionNumber]), 1)
FROM [MySchema].[Project]
END
您知道如何将十进制数的尾随数重置为0吗?
谢谢!
答案 0 :(得分:3)
使用FLOOR
IF @IsMajor = 'true'
BEGIN
SELECT @VersionNumber = FLOOR(COALESCE(1 + MAX([VersionNumber]), 1))
FROM [MySchema].[Project]
END
IF @IsMajor = 'false'
BEGIN
SELECT @VersionNumber = COALESCE(0.1 + MAX([VersionNumber]), 1)
FROM [MySchema].[Project]
END
答案 1 :(得分:0)
您可以先将MAX(VersionNumber)
投射到int
。这将截断十进制数字。如果您将其转换回decimal(18,1)
,则可以添加1:
SELECT COALESCE(1 + CONVERT(DECIMAL(18, 1), CONVERT(INT, MAX([VersionNumber]))), 1)
答案 2 :(得分:0)
或上限
IF @IsMajor = 'true'
BEGIN
SELECT @VersionNumber = ceiling(MAX([VersionNumber])+.1)
FROM [MySchema].[Project]