首页 文章

数据透视表中的总数百分比

提问于
浏览
0

我在Excel 2007中并使用SQL查询将来自两个测试装备的通过/失败数据拉入数据透视表 . 以下是我当前/理想的输出,请原谅日期的格式!

我已经尝试了值字段设置>显示值作为列的百分比,但这不能正常工作,因为它还会划分钻机之间的通过率 . 我发现了更改父列的引用,但这似乎是Excel 2010以后的版本 . 有人能指出我正确的方向吗?

电流输出

Pass Rate   Date                    
Outcome      2013-12-05 2013-12-08  2013-12-09  2013-12-10  2013-12-11
F                67         17          50          62           51 
RigOne           33         11          31          25           27
RigTwo           34          6          19          37           24
P                80         29          54          79           46
RigOne           50         21          32          42           21
RigTwo           30          8          22          37           25
Grand Total     147         46         104         141           97

理想输出

Pass Rate   Date                    
             2013-12-05 2013-12-08  2013-12-09  2013-12-10  2013-12-11
RigOne           %%         %%          %%          %%           %%
RigTwo           %%         %%          %%          %%           %%
Average          %%         %%          %%          %%           %%

2 回答

  • 0

    如果这是你想要的结果:

    SO20518715 example

    然后,假设您的源数据分为四列:Rig,Date,Outcome和Value:

    • 为列标签和Σ值的总和创建带有行标签,日期和结果(自上而下顺序)的Rig的PT .

    • 在“快捷菜单”中,“数据透视表选项...”,“总计和过滤器”取消选中“显示行的总计” .

    • 选择 Fail 并在数据透视表工具>选项>工具 - 公式,计算项目...添加名称的平均值:和公式中:放 =Pass/(Pass +Fail ) .

    • 选择平均值并将A到Z排序 .

    • 在总计下面的行中计算每个日期平均值下的加权平均通过率 .

    • 设置Grand Total行的字体颜色以匹配填充颜色 .

    • 隐藏通过/失败列和行标签行 .

    • 将单元格更改为通过率和日期 .

    • 格式适合 .

  • 0

    我实际上设法通过更改我的SQL查询来提供输入pnuts建议 . 一旦我更改了代码,它就非常简单了 - 我只是为每个装备创建了一个计算字段,将通过次数除以测试次数以及两者的平均值,然后将它们格式化为百分比 . 如果它对任何人都有用,我在下面包含了我的SQL . 可能非常笨拙,但它给出了正确的答案!

    SELECT CONVERT (Date, [Stamp]) AS Date
      ,SUM(case when Pass='P' and TestRig = 'Rig 1' THEN 1 ELSE 0 END) AS R1Passes
      ,SUM(case when Pass='P' and TestRig = 'Rig 2' THEN 1 ELSE 0 END) AS R2Passes
      ,SUM(case when Pass IN ('P', 'F') and TestRig = 'Rig 1' THEN 1 ELSE 0 END) AS R1Tests
      ,SUM(case when Pass IN ('P', 'F') and TestRig = 'Rig 2' THEN 1 ELSE 0 END) AS R2Tests
    FROM [dbase].[dbo].[tbl_Results]
    where Stamp > '2013-12-01'
      and TestName = 'Finished'
    GROUP BY CONVERT (Date, [Stamp])
    

相关问题