Pivot - 如何求和和计算结果

Posted

技术标签:

【中文标题】Pivot - 如何求和和计算结果【英文标题】:Pivot - how to sum and calculate the outcome 【发布时间】:2017-07-27 18:38:18 【问题描述】:

我确信这是一个快速的方法,但是除了答案之外,我尝试了所有方法。我有一个工作正常的枢轴脚本,除了列中的结果,我需要除以 100。所以结果 / 100 脚本是

SELECT 
USERID AS UserId,APPOINTMENTDATE,
isnull ([1],0) as'other',isnull ([2],0) as 'Medicare'
FROM 
(SELECT invoices.USERID, APPOINTMENTDATE,
[total],PAYERCODE,users.LOCATIONID
FROM APPOINTMENTS
where 
APPOINTMENTDATE between '2017-01-22' and '2017-01-23'  
) AS SourceTable
PIVOT
(
Sum(total)
FOR PAYERCODE IN ([1], [2])
) AS PivotTable;

所以我想做的是: Sum(total) 更改为 Sum(total/100)

任何想法.. 干杯

【问题讨论】:

【参考方案1】:

添加此示例,因为它可以正常工作。这是小提琴:http://sqlfiddle.com/#!6/8eef1/1/0

您的示例代码的问题是您试图在表本身而不是 Pivot 上进行选择。您需要在“SourceTable”中定义列,然后透视 PayerCode,然后执行 Select * FROM (Sourcetable Pivottable)

 drop table TestingPivot     
 Create table TestingPivot
 ( Total INT,
  Payercode INT,
  LocationID INT,
  UserID INT,
  Name VARCHAR(100) )

   Insert into TestingPivot values(100, 1, 1, 1, 'Ryan')
   Insert into TestingPivot values(200, 2, 2, 2, 'Mike')
   Insert into TestingPivot values(300, 3, 3, 3, 'John')

  Select * from (
  Select Total/100 as NewTotal, PayerCode, UserID, LocationID, 
  case when PayerCode = 1 then 'Other'
       when PayerCode = 2 then 'Medicare'
       else ''
       end as Type


   from TestingPivot
       ) as t
       Pivot
       (
         Sum(NewTotal) 
         FOR PayerCode IN  ("1","2")
        ) as P;

【讨论】:

嗨。抱歉,这与我得到的消息相同,即 Msg 102, Level 15, State 1, Line 13 '/' 附近的语法不正确。 如果是这种情况,请在您的选择处除以总数,然后旋转 SUM。应该是相同的数学。已编辑。 不,这会引发错误。消息 8155,级别 16,状态 2,第 17 行没有为“SourceTable”的第 3 列指定列名。消息 207,级别 16,状态 1,第 19 行无效的列名称“总计”。尝试了一些变化...... 它必须是你写它的方式。我在我的数据库上尝试了它,它工作 Select * from (select MemberAge *100 as NewTotal, MemberFirstName from [SCRATCH_Test].[Test] ) 作为 Source PIVOT ( sum(Newtotal) For MemberFirstName in (Gloria, Lori, Nelson) ) 作为可旋转的 上面的测试是年龄值的*100。而不是 /100 但它的语法相同。请用你的表创建一个 SQL Fiddle,让我们看看问题出在哪里。

以上是关于Pivot - 如何求和和计算结果的主要内容,如果未能解决你的问题,请参考以下文章

SQL Pivot 未对所有结果求和

Power Pivot中如何通过添加列计算移动平均?

POWER PIVOT基础篇

带 Pivot 的存储过程不返回结果结构,而是返回零值

simulink 中 将计算的结果逐个的相加用啥模块啊?

多个单元格求和,但个别单元格需计算?