2016-04-20 24 views
0

Es hat also eine Weile gedauert, bis ich herausgefunden hatte, wie ich meine erste UDF erstellen konnte, aber nachdem ich es behoben hatte, dachte ich, meine nächste wäre ein Kinderspiel. Leider ist das nicht der Fall. Ich ziehe ein Feld (ORIG_CLAIM, float) und möchte diese Nummer kategorisieren. Hier ist mein Code:SQL - Verwenden von logischen Operatoren in einer UDF-Fallanweisung

CREATE FUNCTION [dbo].[fnOC_LEVEL](@ORIG_CLAIM float) 
RETURNS nvarchar(255) 
AS 
BEGIN 
    DECLARE @result as varchar(255); 
    SELECT @result = case @ORIG_CLAIM 
     when < 1000 then 'A_Under 1000' 
     when >= 1000 and <= 4999.99 then 'B_1000-4999' 
     when >= 5000 and <= 7499.99 then 'C_5000-7499' 
     when >= 7500 and <= 9999.99 then 'D_7500-9999' 
     when >= 10000 and <= 14999.99 then 'E_10000-14999' 
     when >= 15000 and <= 19999.99 then 'F_15000-19999' 
     when >= 20000 then 'G_Over 20000' 
    END 
    RETURN @result 
END 
GO 

Ich erhalte den Fehler "falsche Syntax nahe '<'". Kann jemand wee was ich falsch machen könnte?

Antwort

0

Ich denke, dass Sie die Vergleichswerte als float angeben müssen. Zum Beispiel:

when < 1.0E3 then 'A_Under 1000' 
when >= 1.0E3 and <= 4.99999E3 then 'B_1000-4999' 

usw.

+1

dachte ich, mein Problem heraus. Es war nicht das Format der Nummer. Es war die Fallaussage selbst. 'SELECT @result = Fall wenn @ORIG_CLAIM <1000 DANN 'A_Under 1000'' – Niq6