繁体   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