簡體   English   中英

添加新行作為總成績

[英]Add new row as Total Grade in

我要一個學生成績單的最后一行(總分)的列表作為總平均績點

例如:

課程 年級
數學 15
物理 19
化學 14
總平均值 16

但是我不能做最后一行(總平均數)有沒有辦法創建一個虛擬行?

select crs.Name,
Grade,
crs.CourseTypeId
from Student std
    inner join Selection sct on sct.StudentId = std.Id
    inner join Major mjr on mjr.Id = std.MajorId
    inner join CourseMajor CrsM on CrsM.MajorId = mjr.Id
    inner join Course crs on crs.Id = Crsh.CourseId
    inner join Teach tch on tch.CourseId = crs.Id
    inner join Teacher tchr on tchr.Id = tch.TeacherId
    inner join Unit unt on unt.TeachId = tchr.Id
    inner join Term trm on trm.Id = unt.TermId
where std.FirstName = N'sara' 
    and TermId = EnterTermId
order by crs.Name

是的,你可以使用:

(select(SUM(50/5))) as 'AVG1'
(select(AVG(50/5))) as 'AVG2'

作為一個新專欄,

select tbl_Test.id2, tbl_Test.sName
    , (select(SUM(50/5))) as 'AVG'
from tbl_Test;

更新:創建一個新表並設置計算和名稱,我創建了tbl_result結果存儲為標題,將totalAverage存儲為小數以存儲計算 AVG、SUM 等。實現此目的的最佳方法是在此處使用存儲過程你可以像你說的那樣創建一個虛擬表。

select * from tbl_result;
-- Insert your cal. here
insert into tbl_result (idr, result, totalAverage ) values (1, 'Total Average', (select(AVG(50/5))))

-- Get the result and combine with your select as 'Virtual row' :)
select tbl_Test.id2, tbl_Test.sName from tbl_Test
union
select tbl_result.totalAverage, tbl_result.result from tbl_result

最終結果: 結果

以下是使用存儲過程 SP 執行此操作的方法:

USE [Testing]
GO
/****** Object:  StoredProcedure [dbo].[sp_Result]    Script Date: 3/19/2022 10:46:18 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_Result]

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @tempTable AS TABLE (rid INT, result nvarchar(50), totalAverage decimal(18,4))
    DECLARE @cal as decimal(18,4)

    -- Get your cal. avg, sum, count ....
    select @cal = AVG(tbl_Test.id2) from tbl_Test
    -- save the result....
    insert into @tempTable (rid, result, totalAverage) values (1, 'Total Average', @cal)

    -- Return the final result: 
    select tbl_Test.id2, tbl_Test.sName from tbl_Test
    union
    select totalAverage, result from @tempTable


END

如何運行SP? -- 執行SP exec sp_Result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM