Sql server 使用临时表和存储过程获取一些数据

Sql server 使用临时表和存储过程获取一些数据,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个项目,目的是得到如图所示的分析结果: 但是,我的表格如下图所示: 现在,我在这个问题中使用我的标题进行搜索,以了解如何实现我在图1中显示的结果,使用图2中的表生成一个sql过程,如本文所述,但我遇到了问题,需要您的帮助 CREATE proc [dbo].[getScoreClassificationbySchools] @NameofSchool nvarchar(31), @levelName nvarchar(5) as Begin create table #A(LevelNa

我有一个项目,目的是得到如图所示的分析结果:

但是,我的表格如下图所示:


现在,我在这个问题中使用我的标题进行搜索,以了解如何实现我在图1中显示的结果,使用图2中的表生成一个sql过程,如本文所述,但我遇到了问题,需要您的帮助

CREATE proc [dbo].[getScoreClassificationbySchools]
@NameofSchool nvarchar(31), @levelName nvarchar(5)
as 
Begin
create table #A(LevelNames varchar(50), SchoolSubject varchar (50))
create table #B(LevelNames varchar(50), TotalNostudent int, SchoolSubjectt varchar (50))
create table #C(LevelNames varchar(50), ScoreClassDistinction varchar (10), SchoolSubject varchar (50))
create table #D(LevelNames varchar(50), ScoreClassCredit varchar (10), SchoolSubject varchar (50))
create table #E(LevelNames varchar(50), ScoreClassPass varchar (10), SchoolSubject varchar (50))
create table #F(LevelNames varchar(50), ScoreClassFail varchar (10), SchoolSubject varchar (50))

insert into #A(LevelNames, SchoolSubject)
select distinct LevelName,  Subject from tb_schlist where @levelName =LevelName AND @NameofSchool = SchoolName 

insert into #B(LevelNames, TotalNostudent,SchoolSubjectt)
select distinct LevelName, count (LevelName) as TotalNoOfStudent, Subject from tb_schlist where @levelName =LevelName AND @NameofSchool = SchoolName 

insert into #C(LevelNames, ScoreClassDistinction, SchoolSubject)
select distinct LevelName, Grades, Subject from tb_schlist where  @levelName =LevelName and @NameofSchool = SchoolName and Grades='A1'

insert into #D(LevelNames, ScoreClassCredit, SchoolSubject)
select distinct LevelName, Grades, Subject from tb_schlist where @levelName =LevelName and @NameofSchool = SchoolName and Grades='B2'

insert into #E(LevelNames, ScoreClassPass, SchoolSubject)
select distinct LevelName, Grades, Subject from tb_schlist where  @levelName =LevelName and @NameofSchool = SchoolName and Grades='B3'

insert into #F(LevelNames, ScoreClassFail, SchoolSubject)
select distinct LevelName, Grades, Subject from tb_schlist where  @levelName =LevelName and @NameofSchool = SchoolName and Grades='C4'

SELECT t1.lnames , t2.SchoolSubject, t3.ScoreClassDistinction, t4.ScoreClassCredit, t5.ScoreClassPass, t6.ScoreClassFail from #A t1 join #B t2 on t1.LevelNameS = t2.LevelNames join #C t3 join #D t4 on t3.LevelNames = t4.LevelNames join #E t5 join #F t6  on t5.LevelNames = t6.LevelNames
试试这个:

select SUBJECT, 
[A1]+[B2]+[B3]+[C4]+[C5]+[C6] + [D7]+ [E8] + [F9] 
As TotalNoOfStudentsThatSat,
[A1],[B2],[B3],[C4],[C5],[C6] ,
 [A1]+[B2]+[B3]+[C4]+[C5]+[C6] AS [A1-C6]
 , [D7],[E8],[D7]+ [E8] AS [D7-E8]
 , [F9] from marks 
 pivot (
   count(grade) 
   for grade in ([A1],[B2],[B3],[C4],[C5],[C6],[D7],[E8],[F9])
 )PVT

我被困住了,我需要你的帮助——你必须说得更具体些。你到底遇到了什么问题?你应该如何从你的输入中得到结果?提问时请具体说明。这将有助于社区回答您的问题,对您和社区都有好处。谢谢@Ravi。这很有帮助。我修改了它,使其看起来像这样“选择不同的sbjname,将[lname]计算为学生的总人数,[A1],[B2],[B3],[C4],[C5],[C6],[A1]+[B2]+[B3]+[C4]+[C4]+[C5]+[C6]计算为[A1-C6],[D7],[D7]+[E8],[F9]来自tb(schlist pivot CountClassify,用于将分数分类为[A1],[B2],[C5],[D7],[C6],[E8],[F9]PVT where SchoolName='Girls Junior High School'',但我不知道如何添加如图所示的百分比[链接]