2017-09-16 14 views
0

ブロードキャストされたクラスのデータを生成するために使用された動的ピボットを使用しましたが、各子の合計スコアと件数を取得する必要があります。 。動的に生成されたデータの合計を取得する方法

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX) 
DECLARE @ColumnName AS NVARCHAR(MAX) 

SELECT @ColumnName= ISNULL(@ColumnName + ',','') + QUOTENAME(Course) 
FROM (SELECT DISTINCT Course FROM Courses) AS Courses 

SET @DynamicPivotQuery = 
'SELECT * FROM 
(SELECT  
    [Course], 
    Total,studentcourses.StudentId As Id,fname,lname 
From student 
join StudentCourses 
on student.StudentId = studentcourses.StudentId 
join courses 
on studentcourses.CourseId = courses.courseid)X 
    PIVOT(SUM(Total) 
          FOR Course IN (' + @ColumnName + ')) AS PVTTable' 

    EXEC sp_executesql @DynamicPivotQuery 

Id fname lname AgricSc BasicSc CART English ICT Maths PHE 
1 Fatima Abdullahi 96 97  92  97  93 97  90 
2 Muhammed Abubakar 89 87  92  90  95 92  86 
3 Samiat Akere  96 94  94  99  96 97  97 
4 Idris Yakubu  80 92  96  92  80 88  84 
5 Maryam Suleiman 80 74  95  77  90 77  86 

答えて

0

を次のように私の結果は以下のようにあなたが1よりselectcolumnsを追加することができます:それは感謝を働いた

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX) 
DECLARE @ColumnName AS NVARCHAR(MAX) 
Declare @SelectColumnNames as Nvarchar(max) 

SELECT @ColumnName= ISNULL(@ColumnName + ',','') + QUOTENAME(Course) 
FROM (SELECT DISTINCT Course FROM Courses) AS Courses 

Select @SelectColumnNames = stuff((select Distinct '+'+QuoteName(Course) from Courses for xml path('')),1,1,'') 

SET @DynamicPivotQuery = 
'SELECT Id,fname,lname,' + @ColumnName + ',' + @SelectColumnNames + ' as [TotalScore] FROM 
(SELECT  
    [Course], 
    Total,studentcourses.StudentId As Id,fname,lname 
From student 
join StudentCourses 
on student.StudentId = studentcourses.StudentId 
join courses 
on studentcourses.CourseId = courses.courseid)X 
    PIVOT(SUM(Total) 
      FOR Course IN (' + @ColumnName + ')) AS PVTTable' 

EXEC sp_executesql @DynamicPivotQuery 
+0

。同じ方法が、子供1人あたりの被験者数のカウントに適用されますか? –

関連する問題