表值函数
定义表值函数
1 --定义表值函数 2 CREATE FUNCTION GetStuScore(@Stu_ID INT ) 3 RETURNS TABLE 4 AS RETURN 5 (SELECT 6 MAX('学生'+CONVERT(NCHAR(10),[Stu_ID])) AS 学生 7 ,MAX(CASE WHEN Course='语文' THEN ISNULL(Score,0) ELSE 0 END) AS 语文成绩 8 ,MAX(CASE WHEN Course='数学' THEN ISNULL(Score,0) ELSE 0 END) AS 数学成绩 9 ,MAX(CASE WHEN Course='英语' THEN ISNULL(Score,0) ELSE 0 END) AS 英语成绩 10 ,CONVERT(DECIMAL(4,1),ROUND(AVG(Score),1)) AS 平均成绩 11 FROM [EFDemo].[dbo].[Table_1] 12 GROUP BY Stu_ID HAVING Stu_ID=@Stu_ID)
使用表值函数
1 --使用表值函数 2 SELECT * FROM GetStuScore(1)
标量函数
定义标量函数
1 --定义标量函数 2 CREATE FUNCTION GetScore(@Stu_ID INT,@Course NVARCHAR(10)) 3 RETURNS FLOAT 4 AS 5 BEGIN 6 DECLARE @Score FLOAT 7 SELECT @Score=Score FROM dbo.Table_1 WHERE Stu_ID=@Stu_ID AND Course=@Course 8 RETURN @Score 9 END
使用标量函数
--使用标量函数 SELECT GetScore(1,'语文')