我有一个带有以下代码的Excel工作簿 -
Sub Button1_Click()
Dim conn As New ADODB.Connection
Dim iRowNo As Integer
Dim sFirstName, sLastName As String
With Sheets("Sheet1")
'Open a connection to SQL Server
conn.Open "Provider=SQLOLEDB;" & _
"Data Source=server1;" & _
"Initial Catalog=table1;" & _
"User ID=user1; Password=pass1"
'Skip the header row
iRowNo = 2
'Loop until empty cell in CustomerId
Do Until .Cells(iRowNo, 1) = ""
sFirstName = .Cells(iRowNo, 1)
sLastName = .Cells(iRowNo, 2)
'Generate and execute sql statement
' to import the excel rows to …Run Code Online (Sandbox Code Playgroud) 我目前有一张与此类似的表 -
RecordTime Running Fault
-----------------------------------------------
2016-09-15 11:32:01.00 0 202
2016-09-15 11:32:08.00 1 202
2016-09-15 11:39:31.00 0 21
2016-09-15 11:40:07.00 1 4
2016-09-15 11:42:11.00 0 21
2016-09-15 11:42:39.00 1 45
Run Code Online (Sandbox Code Playgroud)
然后我想计算每条记录的 RecordTimes 之间的时间差。为此,我使用以下 -
WITH rows AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY RecordTime) AS rn
FROM dbo.Table1
)
SELECT DATEDIFF(second, mc.RecordTime, mp.RecordTime)
FROM rows mc
JOIN rows mp
ON mc.rn = mp.rn - 1
Run Code Online (Sandbox Code Playgroud)
哪个返回 -
(No column name)
----------------
7
443
36
124
28
303
Run Code Online (Sandbox Code Playgroud)
不过,我真正想做的是在原始表中创建一个计算列,为我提供这些值。这可能吗?
我认为我可能能够将查询转换为 …