首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分区上Row_Number的替代方案

问分区上Row_Number的替代方案
EN

Stack Overflow用户
提问于 2020-04-01 02:51:45
回答 1查看 477关注 0票数 1

我的数据格式如下:

代码语言:javascript
复制
ID          Agent          AgentState          StateType          StartTime          EndTime
            Smith, Bob     WaitingForCall      Productive         08:00              10:00
            Smith, Bob     OnCall              Productive         10:00              10:30
            Smith, Bob     LoggedOut           NonProductive      10:30              10:45
            Smith, Bob     WaitingForCall      Productive         10:45              11:00
            Smith, Bob     OnCall              Productive         11:00              11:45
            Smith, Bob     OnCall              Productive         11:45              12:15
            Smith, Bob     LoggedOut           NonProductive      12:15              13:15

我想要完成的是将所有时间范围组合在一起,只使用productive类型。因此,最终结果将是:

代码语言:javascript
复制
ID          Agent          StateType          StartTime          EndTime
            Smith, Bob     Productive         08:00              10:30
            Smith, Bob     NonProductive      10:30              10:45
            Smith, Bob     Productive         10:45              12:15
            Smith, Bob     NonProductive      12:15              13:15

在之前的工作中,我可以访问SQL server,我可以通过使用分区上的Row_Number来完成这项工作。现在我只能访问excel/access,我发现很难创建一种方法来将数据“压缩”到只有StateType持续时间。我拉取数据的系统不能更改,所以原始格式也不能修改。

EN

回答 1

Stack Overflow用户

发布于 2020-04-01 03:28:21

这可能不是最好的方法,但它应该是可行的。你也许可以用SQL做这件事,但我不确定该怎么做。

这假设您的数据是有序的,如果不是,您可能需要定义一个基本容器类来将这些值保存到最后。

这将需要一个添加了相关列的新表。

代码语言:javascript
复制
Sub compress()
    Dim db As Database
    Dim rs As Recordset
    Dim employee As String
    Dim state As String
    Dim starting As Date
    Dim ending As Date

    Set db = CurrentDb
    Set rs = db.OpenRecordset("Table1") 'Use real table name


    Dim appendtable As Recordset
    Set appendtable = db.OpenRecordset("Table2") 'Use real table name
    With rs
        .MoveFirst
        employee = ![agent]
        state = ![statetype]
        starting = Format(![starttime], "HH:MM") 'You probably don't need the format
        ending = Format(![endtime], "HH:MM")
        Do Until .EOF
            If employee = ![agent] And state = ![statetype] Then
                ending = Format(![endtime], "HH:MM") 'Track ending times
            Else
                appendtable.AddNew 'Append data
                appendtable![agent] = employee
                appendtable![statetype] = state
                appendtable![starttime] = starting
                appendtable![endtime] = ending
                appendtable.Update

                employee = ![agent] 'Reset Data
                state = ![statetype]
                starting = Format(![starttime], "HH:MM")
                ending = Format(![endtime], "HH:MM")
            End If
            .MoveNext
        Loop
    End With



End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60957843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档