2016-09-27 60 views
2

美好的一天,访问SQL计算

我正在用Access SQL计算大脑冻结。 我有一个表4列数据如下:

enter image description here

我所试图实现的是基于两个页面名称的百分比计算,这些页面的名称“应用程序 - 打印/保存”和'App Process - 显示'。因此,计算将是:

“应用程序 - 打印/保存” /“应用程序 - 显示的”

但是,这也将是每一个“年”和“WEEKOFYEAR”。

什么是最干净的方式来实现这一目标?

其他结果信息: 我想要做的就是再喂了这一点到表中,最有可能的数据透视表,看起来像这样.. enter image description here

所以基本上创建计算的附加列/结果。 在这个表格中会有其他页面具有相同的设置,但我现在已经过滤了一个只有一个组作为示例。

Regards

+2

编辑你的问题,包括要达到的结果。 –

+0

你想要的输出是什么? –

+0

感谢您的快速响应,编辑我原来的问题,包括预期的结果。 –

回答

0

我试着用SQL。你也可以尝试任何其他。

使用透视:

     select YEAR ,page,[29],[30] 
        from #temp pivot 
        (
         max([unique pageview]) 
          FOR weekofyear IN ([29],[30]) 
        )as p 

        order by 
        case when page='App Process - shown' then 1 
        when page='App Process - step 1' then 2 
        when page='App Process - step 2' then 3 
        when page='App Process - Print/Save' then 4 
        end 

对于下面的查询总计算使用:

   select YEAR ,page,[29],[30] from 
      #temp pivot 
      (
      max([unique pageview]) 
        FOR weekofyear IN ([29],[30]) 
      )as p 

      union all 

      select YEAR ,page,[29],[30] 
      from ( select a.year, a.weekofyear,'Total Print/Save calculator Conversion' as 'page', 
        CONVERT(DECIMAL(10, 3), a.[unique pageview])/ 
        CONVERT(DECIMAL(10, 3), b.[unique pageview]) as 'Print/Save calculator Conversion' 
        from 
        (  
        select year , weekofyear , page , [unique pageview]  
        FROM #temp 
        where page in ('App Process - Print/Save') 
        )a inner join (  
         select year , '' as 'Total Print/Save calculator Conversion',weekofyear , page , [unique pageview]  
        FROM #temp 
        where page in ('App Process - shown') 
        )b on a.year=b.year and a.weekofyear=b.weekofyear 
        )c 
      pivot 
      (
      max([Print/Save calculator Conversion]) 
        FOR weekofyear IN ([29],[30]) 
      )as p 

让我们知道如果u对此有任何疑虑。

+0

谢谢@ mr-bhosale我一直在休假,所以我会试一试并回复你。 –

1

用于创建交叉表查询向导 - 与此表达对列名:

[Year] & "-" & [WeekNumber] 
+0

谢谢@gustav我一直在休假,所以我会尝试一下。 –