複数のテーブルを結合してクエリを作成し、同じ識別子の2行の間に時間差があるかどうかを調べました。SQL Serverで2レコード間の時間差を見つける方法
例:Row num
私は上記のデータサンプル中
Row num NodeID Caption VolumeID Caption DateTime
1. 2245 SERVERNAME 6545 D:\RAID 10/10/16 10:25 PM
2. 2245 SERVERNAME 6545 D:\RAID 10/10/16 10:10 PM
3. 2245 SERVERNAME 6545 D:\RAID 10/10/16 9:55 PM
4. 2245 SERVERNAME 6545 D:\RAID 10/10/16 9:40 PM
5. 2245 SERVERNAME 6545 D:\RAID 10/10/16 9:25 PM
6. 2245 SERVERNAME 6545 D:\RAID 10/10/16 9:25 PM
7. 2245 SERVERNAME 7710 D:\AFS\G 10/10/16 10:25 PM
8. 2245 SERVERNAME 7710 D:\AFS\G 10/10/16 10:10 PM
9. 2245 SERVERNAME 7710 D:\AFS\G 10/10/16 9:55 PM
10. 2245 SERVERNAME 7710 D:\AFS\G 10/10/16 9:40 PM
11. 2245 SERVERNAME 7710 D:\AFS\G 10/10/16 9:25 PM
12. 2245 SERVERNAME 7711 D:\AFS\G 10/10/16 10:25 PM
13. 2245 SERVERNAME 7711 D:\AFS\G 10/10/16 10:10 PM
14. 2245 SERVERNAME 7711 D:\AFS\G 10/10/16 9:55 PM
15. 2245 SERVERNAME 7711 D:\AFS\G 10/10/16 9:40 PM
16. 2245 SERVERNAME 7711 D:\AFS\G 10/10/16 9:25 PM
17. 2245 SERVERNAME 7712 D:\AFS\C 10/10/16 10:25 PM
18. 2245 SERVERNAME 7712 D:\AFS\C 10/10/16 10:10 PM
19. 2245 SERVERNAME 7712 D:\AFS\C 10/10/16 9:55 PM
20. 2245 SERVERNAME 7712 D:\AFS\C 10/10/16 9:40 PM
21. 2245 SERVERNAME 7712 D:\AFS\C 10/10/16 9:25 PM
22. 2245 SERVERNAME 7713 D:\AFS\C 10/10/16 10:25 PM
23. 2245 SERVERNAME 7713 D:\AFS\C 10/10/16 10:10 PM
24. 2245 SERVERNAME 7713 D:\AFS\C 10/10/16 9:55 PM
25. 2245 SERVERNAME 7713 D:\AFS\C 10/10/16 9:25 PM
26. 2245 SERVERNAME 7713 D:\AFS\C 10/10/16 9:40 PM
をよりよく説明するために追加した追加の列であり、識別子は、ノードIDとボリュームIDです。
識別子が一致する場合は、最新のタイムスタンプを持つレコードとその前のレコードを比較して差異を判断する必要があります。
上記の例では、クエリは、NODEID 2245及びボリュームID 6545の行番号1と2のみと一致することができる必要があり、出力はNODEID 2245及びボリュームID 7710、行番号7及び8のために、同様に15分
なければならないはず計算に使用する。
どうすればいいですか?私はCTE式で使用しようとしましたが、できませんでした。私もサブクエリで試してみましたが失敗しました。
誰かが私にここで質問を書くのを手伝ってもらえますか?私が試した
問合せ:
WITH rows AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY [Operations-Orion].[dbo].[VolumeUsage].Datetime) AS rn
FROM [Operations-Orion].[dbo].[VolumeUsage]
)
SELECT DATEDIFF(second, mc.DateTime, mp.Datetime)
FROM [Operations-Orion].[dbo].[VolumeUsage] mc
JOIN [Operations-Orion].[dbo].[VolumeUsage] mp
ON mc.rn = mp.rn
これは、エラーがスローされます。
Msg 207, Level 16, State 1, Line 10
Invalid column name 'rn'.
Msg 207, Level 16, State 1, Line 10
Invalid column name 'rn'.