Мне нужно создать скалярное user defined function
в SQL Server
.Мне нужно иметь предложение with
для хранения некоторых промежуточных таблиц, которые приведут к окончательному возвращаемому результату.Мне также нужно IF .. ELSE
, потому что в зависимости от входного параметра запрос к результату различен.Однако я не могу написать код без ошибок, комбинируя эти два элемента вместе.Моя функция была бы такой:
CREATE FUNCTION [dbo].[getMyValue](
@inputType int
)
RETURNS float
AS
BEGIN
DECLARE @result float
;
WITH tempTable AS
(
SELECT * from TableA
)
;
IF inputType = 1
set @result = select sum(t.result1) from tempTable
else
selecset @result = select sum(t.result2) from tempTable
return @result
END
GO
Но теперь она жалуется incorrect syntax near 'if'
.Если я удаляю предложение with
(и запрашиваю некоторую фактическую таблицу), он компилируется, или если я удаляю операторы IF
, он также компилируется.Так как я могу заставить их работать вместе?