我写了这两个函数:
USE muziekdatabase
GO
CREATE FUNCTION fnSpecNivAantal
(
@Niveau as char(1)
)
RETURNS char(1)
AS
BEGIN
DECLARE @Aantal AS int
IF @Niveau = 'A'
SET @Aantal = (SELECT COUNT(*) FROM STUK WHERE niveaucode = 'A')
ELSE IF @Niveau = 'B'
SET @Aantal = (SELECT COUNT(*) FROM STUK WHERE niveaucode = 'B')
ELSE IF @Niveau = 'C'
SET @Aantal = (SELECT COUNT(*) FROM STUK WHERE niveaucode = 'C')
RETURN @Aantal
END
USE muziekdatabase
GO
ALTER FUNCTION fnHoogsteNummer
(
@EersteNummer as numeric,
@TweedeNummer as numeric
)
RETURNS numeric
AS
BEGIN
DECLARE @HoogsteNummer as VARCHAR(MAX)
IF MAX(@Eerstenummer) > MAX(@TweedeNummer)
SET @HoogsteNummer = @EersteNummer
ELSE IF
MAX(@Tweedenummer) > MAX(@Eerstenummer)
SET @HoogsteNummer = @TweedeNummer
ELSE IF
@EersteNummer = @TweedeNummer
SET @HoogsteNummer = 'Nummers zijn gelijk'
ELSE
SET @HoogsteNummer = 'Er is iets fout gegaan'
RETURN @HoogsteNummer
END
现在他们几乎可以正常工作了。但有一件事不太对劲。当我在函数中插入一个值时,结果是一个具有相同答案的整个列表。就像 10 行只有 3,它应该只有 1 行,数字 3。我知道我可以使用DISTINCT
,但我认为该功能有问题。我尝试使用CASE / WHEN
,但这也不起作用..