如果我在Sum运算符中使用它,这个函数不起作用。它说“操作数数据类型nvarchar是sum operator.invalid for”。最简单的解决方案是什么?我在许多地方使用这个函数给出结果数字或nvarchar。感谢您的帮助。
USE [DSS]
GO
/****** Object: UserDefinedFunction [dbo].[DECODE] Script Date: 03/22/2011 09:30:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[DECODE]
(@Val1 nvarchar(20),@Val2 nvarchar(10),@Val3 nvarchar(10),@Val4 nvarchar(10))
RETURNS nvarchar(10)
AS
BEGIN
RETURN
(
Select case @Val1 When @Val2 then @Val3 else @Val4 end
)
END
答案 0 :(得分:1)
总和适用于整数。将数据类型更改为int,它应该适合您。
CREATE FUNCTION [dbo].[DECODE]
(@Val1 int,@Val2 int,@Val3 int,@Val4 int)
RETURNS int
AS
BEGIN
RETURN
(
Select case @Val1 When @Val2 then @Val3 else @Val4 end
)
END
或者将结果转换为总和
中的intselect sum(cast(dbo.decode('1','1','3','4') as int))