【问题标题】:Access SQL Calculation访问 SQL 计算
【发布时间】:2016-09-27 10:46:02
【问题描述】:

美好的一天,

我对 Access SQL 计算感到头晕目眩。 我有一个包含 4 列的表,其中包含以下数据:

我想要实现的是基于两个页面名称的百分比计算,即页面名称“应用程序进程 - 打印/保存”和“应用程序进程 - 显示”。所以计算结果是:

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

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

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

附加结果信息: 然后我想做的是把它输入一个表格,很可能是一个看起来像这样的数据透视表..

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

问候

【问题讨论】:

  • 编辑您的问题并包含您想要达到的结果。
  • 你想要的输出是什么?
  • 感谢您的快速回复,编辑了我的原始问题以包含预期结果。

标签: sql ms-access calculated-columns


【解决方案1】:

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

[Year] & "-" & [WeekNumber]

【讨论】:

  • 谢谢@gustav 我一直在休假,所以我会试试这个。
【解决方案2】:

我尝试使用 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

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

【讨论】:

  • 谢谢@mr-bhosale 我一直在休假,所以我会试试这个并回复你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 2018-07-18
  • 2020-10-23
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多