SQL 表值函数/标量函数

表值函数

定义表值函数

 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,'语文')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章