【问题标题】:Converting column data to row data将列数据转换为行数据
【发布时间】:2019-05-23 20:35:18
【问题描述】:

我的 sql 能力非常有限,我只在 MS Access 中使用过简单的查询和连接。我的任务是转换这些数据:

Meter_Number    Date    Time        Kwh
93112575    23/05/2019  08:00:00    278.334
93112575    23/05/2019  09:00:00    279.254
93112575    23/05/2019  10:00:00    280.012
93112575    23/05/2019  11:00:00    281.315
93112575    23/05/2019  12:00:00    282.256
93112575    23/05/2019  13:00:00    285.852
18794160    22/05/2019  14:00:00    6145.504
18794160    22/05/2019  15:00:00    6147.968
18794160    22/05/2019  16:00:00    6150.855
18794160    22/05/2019  17:00:00    6155.283
18794160    22/05/2019  18:00:00    6161.977
18794160    22/05/2019  19:00:00    6162.854
18794160    22/05/2019  20:00:00    6163.644
18794160    22/05/2019  21:00:00    6165.763
18794160    22/05/2019  22:00:00    6169.031
18794160    22/05/2019  23:00:00    6172.302
18794160    23/05/2019  00:00:00    6175.58
18794160    23/05/2019  01:00:00    6178.863
18794160    23/05/2019  02:00:00    6182.146
18794160    23/05/2019  03:00:00    6185.426
18794160    23/05/2019  04:00:00    6188.709
18794160    23/05/2019  05:00:00    6191.994
18794160    23/05/2019  06:00:00    6195.276
18794160    23/05/2019  07:00:00    6197.547
18794160    23/05/2019  08:00:00    6198.336
18794160    23/05/2019  09:00:00    6199.126
18794160    23/05/2019  10:00:00    6200.301
18794160    23/05/2019  11:00:00    6208.569
15296497    22/05/2019  14:00:00    62.064
15296497    22/05/2019  15:00:00    62.095
15296497    22/05/2019  16:00:00    63.044
15296497    22/05/2019  17:00:00    64.062
15296497    22/05/2019  18:00:00    65.024
15296497    22/05/2019  19:00:00    65.085

转换成这种格式:

93112575,#1,23/05/2019,08:00:00,278.334,#2,23/05/2019,09:00:00,279.254,#3,23/05/2019,10:00:00,280.012 ~etc.
18794160,#1,22/05/2019,14:00:00,6145.504,#2,22/05/2019,15:00:00,6147.968,#3,22/05/2019,16:00:00,6150.855,#4,22/05/2019,17:00:00,6155.283 ~etc.
15296497,#1,22/05/2019,14:00:00,62.064,#2,15296497,22/05/2019,15:00:00,62.095,#3,22/05/2019,16:00:00,63.044

这是您网站上发布的类似问题: R Programming Converting data columns to Rows

我们将不胜感激任何帮助。我明白这不是一项简单的任务,如果没有人有时间帮助我,我不会生气。

我从您的一个页面中复制了一些代码并将其添加到事件过程中,它填充了表格,但将所有数据放在了一列中。

【问题讨论】:

标签: ms-access


【解决方案1】:

以下是使用代码重新格式化数据的示例:
首先,我将数据导入到访问表中:

然后我使用 vba 循环遍历表格:


Public Sub ReformatData()
'declarations
'Dim rstData2 As DAO.Recordset
'Set rstData2 = CurrentDb.OpenRecordset("tblData2", dbOpenTable)
Dim rstData As DAO.Recordset
Dim currentMeter_Number As Long
Dim counter As Integer
Dim recordstring As String
Set rstData = CurrentDb.OpenRecordset("tblData", dbOpenTable)
'loop through table
If Not rstData.EOF Then
rstData.MoveFirst
Do While Not rstData.EOF
counter = 1
'process first Meter_Number in set
currentMeter_Number = rstData!Meter_Number
recordstring = recordstring & currentMeter_Number & ",#1," & rstData!DateRead & "," & _
Format(rstData!TimeRead, "hh:mm:ss") & "," & rstData!Kwh
rstData.MoveNext
    'process the rest of set
    Do While Not rstData.EOF
    If Not currentMeter_Number = rstData!Meter_Number Then
    Exit Do
    Else
        If Not IsNull(rstData!Meter_Number) Then
        If currentMeter_Number = rstData!Meter_Number Then
        counter = counter + 1
        recordstring = recordstring & ",#" & counter & "," & rstData!DateRead & "," & _
        Format(rstData!TimeRead, "hh:mm:ss") & "," & rstData!Kwh
        rstData.MoveNext
        End If
        End If
        End If
    Loop
recordstring = Left(recordstring, Len(recordstring) - 1) 'remove last comma
Debug.Print recordstring & vbCrLf
'rstData2.AddNew
'rstData2!MeterString = recordstring
'rstData2.Update
recordstring = ""
Loop
End If
End Sub

不清楚要将数据输出到哪里,所以我演示了输出到调试和另一个已经存在的表。表格版本给出:

【讨论】:

  • 很抱歉花了这么长时间才发布答案和肿胀的 vba 代码。我正在处理我的访问版本中的一个错误。
猜你喜欢
  • 2022-09-24
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多