2012-06-15 41 views
0

我使用以下过程通过转动查询检索总presentsabsents ....我想的Presents[P]SUMAbsents[A]然后calculate percentage如何查找在SQL Server 2005中旋转两列的和?

ALTER PROCEDURE [DBO]。[GetAttendence](@ COURSE_ID VARCHAR( 30),@Semester VARCHAR(10))

AS 
    SELECT DISTINCT Enroll_Number, Course_Id, Semester, Isnull([P],0) 
              As Presents, Isnull([A],0) As Absents 

    FROM (SELECT Enroll_Number, Course_Id, Semester, Flag from Attendence) ps 
    pivot(Count(Flag) for Flag in ([P],[A])) as pvt 

    WHERE Course_Id = @Course_Id and Semester = @Semester 

Forula实施....

萨姆=礼物+缺席

百分比=((礼物/和)* 100)

+0

如何加入'A + P为SumAP'到字段列表? –

+0

Mikael - 我可以放置它?如果可能请给我例子....谢谢 – user1457190

+0

我的意思是在字段列表中'选择不同的A + P,注册号,课程ID ......'。您的查询看起来有点可疑。如果你可以添加一些示例数据和预期输出的表结构,也许有人可以为你提供一个替代查询。 –

回答

0

试试这个:

select Enroll_Number, 
     Course_Id, 
     Semester, 
     P as Presents, 
     A as Absents, 
     P+A as SumPA, 
     1.0*P/(P+A)*100 as Percentage 
from 
    (
    select Enroll_Number, Course_Id, Semester, Flag 
    from Attendence 
    where Course_Id = @Course_Id and 
      Semester = @Semester 
) ps 
pivot 
    (
    count(Flag) for Flag in ([P],[A]) 
) as pvt