Пользовательская функция MS SQL - PullRequest
0 голосов
/ 22 марта 2011

эта функция не работает, если я использую ее в операторе Sum. Она говорит: «Тип данных операнда nvarchar - это оператор sum.invalid для». Какое самое простое решение для этого? Я использую эту функцию во многих местах, которая дает результат числовой или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

1 Ответ

1 голос
/ 22 марта 2011

Сумма работает в ц.Измените тип данных на 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

Или приведите результат к int в сумме

select sum(cast(dbo.decode('1','1','3','4') as int))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...