Si d'Autre Si Dans une Fonction Sql Server

J'ai cette fonction, je suis en train de créer. Quand je l'analyser, il fonctionne très bien, mais pour créer de la fonction dans la base de données il me dit que mon noms de colonnes ne sont pas valides. Ce n'est pas vrai, j'ai orthographié correctement. Voici le code:

ALTER FUNCTION [dbo].[fnTally] (@SchoolId nvarchar(50))
RETURNS int

AS 

BEGIN 

DECLARE @Final nvarchar
IF EXISTS (

    SELECT 
        question, 
        yes_ans, 
        no_ans, 
        na_ans, 
        blank_ans 
    FROM dbo.qrc_maintally 
    WHERE school_id = @SchoolId 

)

    IF yes_ans > no_ans AND yes_ans > na_ans 
    BEGIN
        SET @Final = 'Yes'
    END

    ELSE IF no_ans > yes_ans AND no_ans > na_ans 
    BEGIN
        SET @Final = 'No'
    END

    ELSE IF na_ans > yes_ans AND na_ans > no_ans 
    BEGIN
        SET @Final = 'N/A'
    END

RETURN @Final

END
Est school_id le PK sur cette table? c'est à dire peut-il y jamais être plus qu'une ligne correspondante?
actualiser, je l'ai fait il y a quelques minutes.
Il n'y a pas de PK dans ce tableau, mais oui, il pourrait être utilisé comme un. Et les valeurs de yes_ans, no_ans, etc sont des entiers, donc je suis en train de comparer chaque ligne par schoolId et qui a la plus grande valeur, alors la sortie de valeur finale.
Eh bien, si plus de 1 ligne correspond à la ligne qui devrait être utilisé dans le calcul? Aussi pourquoi votre fonction déclarée en tant que RETURNS int quand il retourne en fait varchar? Vous devez aussi déclarer une longueur pour tous vos variables de type varchar. par exemple, DECLARE @Final VARCHAR(3)
Si plus d'une ligne correspond alors à un autre examen sera effectué sur notre site et que l'examinateur, un disjoncteur.

OriginalL'auteur salim | 2011-02-17