【问题标题】:How to find Sum Of Pivoting two columns in SQL Server 2005?如何在 SQL Server 2005 中找到旋转两列的总和?
【发布时间】:2012-06-15 03:49:46
【问题描述】:

我正在使用以下过程通过使用数据透视查询来检索presentsabsents 的总数....我想Presents[P]Absents[A]SUMAbsents[A] 然后calculate percentage

改变程序 [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)

【问题讨论】:

  • 在字段列表中添加A+P as SumAP怎么样?
  • Mikael - 我可以把它放在哪里?如果可能的话,请给我一个例子....谢谢
  • 我的意思是在字段列表中select distinct A+P, Enroll_Number, Course_Id ...。您的查询看起来有点可疑。如果您可以添加带有一些示例数据和预期输出的表结构,也许有人可以为您提供替代查询。
  • “可疑”是指distinct 关键字,isnull 的使用和主查询中的 where 子句,我怀疑它在子查询中做得更好。跨度>
  • Mikael - A+P As Total 工作正常...我怎样才能找到上面给出的公式 percentage? ?

标签: sql-server-2005 find sum pivot


【解决方案1】:

试试这个:

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 

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2020-08-15
    • 1970-01-01
    • 2012-04-19
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多