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

 

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