访问SQL计算

时间:2016-09-27 10:46:03

标签: sql ms-access calculated-columns

美好的一天,

我正在使用Access SQL计算进行大脑冻结。 我有一个包含4列的表格,其中包含以下数据:

enter image description here

我想要实现的是基于两个页面名称的百分比计算,这些页面名称为“App Process - Print / Save”和“App Process - Shown”。因此,计算结果将是:

  

'应用程序流程 - 打印/保存'/'应用程序流程 - 显示'

但这也适用于每个'年'和'WeekofYear'。

实现这一目标的最简洁方法是什么?

其他结果信息: 我想要做的就是把它送到一张桌子里,很可能是一个透视表看起来像这样。 enter image description here

因此基本上为计算/结果创建了一个额外的列。 此表中将有其他页面具有相同的设置,但我现在仅过滤掉一个组作为示例。

此致

2 个答案:

答案 0 :(得分:1)

使用向导创建交叉表查询 - 使用此表达式作为列名:

[Year] & "-" & [WeekNumber]

答案 1 :(得分:0)

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

使用pivot:

                      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

如果您对此有任何疑虑,请告诉我们。