我敢肯定,有實現這一點有更優雅的方式,但我會請盡我所能:假設您正在尋找一個不間斷的Var1
值鏈,每分鐘至少有一條記錄。
我無法弄清楚的一件事是如何基於一分鐘間隙理論在兩個方向(低和高)進行抓取,所以我使用了一對遞歸CTE
,然後使用了兩對SELECT
。
DECLARE @DateTime DATETIME = '2015/08/10 18:38:00'
DECLARE @Var1 INT = 2
;WITH
Data AS
(
SELECT '2015/08/10 18:35:00' AS D, 1 AS V UNION ALL
SELECT '2015/08/10 18:36:00' AS D, 1 AS V UNION ALL
SELECT '2015/08/10 18:37:20' AS D, 2 AS V UNION ALL
SELECT '2015/08/10 18:38:00' AS D, 2 AS V UNION ALL
SELECT '2015/08/10 18:39:00' AS D, 2 AS V UNION ALL
SELECT '2015/08/10 18:40:00' AS D, 2 AS V UNION ALL
SELECT '2015/08/10 18:39:20' AS D, 1 AS V UNION ALL
SELECT '2015/08/10 18:40:00' AS D, 2 AS V
),
Low AS
(
SELECT D, V
FROM Data
WHERE D = @DateTime AND V = @Var1
UNION ALL
SELECT Data.D, Data.V
FROM
Data
INNER JOIN
Low ON
DATEDIFF(MINUTE, Data.D, Low.D) = 1 AND
Data.V = Low.V
),
High AS
(
SELECT D, V
FROM Data
WHERE D = @DateTime AND V = @Var1
UNION ALL
SELECT Data.D, Data.V
FROM
Data
INNER JOIN
High ON
DATEDIFF(MINUTE, Data.D, High.D) = -1 AND
Data.V = High.V
)
SELECT *
FROM Low
UNION
SELECT *
FROM High
OPTION (MAXRECURSION 0)
你想在SQL中執行此操作還是在VB.Net中執行此操作? –
我在VB編程,但我要求的SQL字符串 – Jaume
它是在數據庫還是在datagridview?或者目前的數據在哪裏? –