2

我在时间点上捕获了审计数据,我想汇总这些数据以显示在一段时间内使用 SQL Server 2014 的值相同的位置。

以下面的示例数据

在此处输入图像描述

我想在不使用游标的情况下理想地将其转置为 - 您会看到输出正在记录值相同的时间段,因此,相同的值可以在不同的时间段内重复(见第 3 行和6)。

在此处输入图像描述

我一直在寻找潜在LEAD()LAG()解决方案,但是我无法弄清楚如何使这项工作能够通过时间来获得相同的价值

任何指示将不胜感激

4

2 回答 2

2

如果列 [value] 不包含不同的数字,您可以使用此查询

 SELECT start,end,value 
 FROM (SELECT MIN(ts) start
             ,MAX(ts) end
             ,value
             ,C 
       FROM (SELECT ts
                   ,value
                   ,(ROW_NUMBER() OVER (ORDER BY ts) 
                    - ROW_NUMBER() OVER (PARTITION BY value ORDER BY ts)) C
             FROM YourTable) x
 GROUP BY value,C) y ORDER BY start
于 2017-04-26T10:58:00.270 回答
1

在看到您的进一步评论后,以下显然没有用......

我想你可能过于复杂了。如果您正在寻找每个不同值的最小和最大 ts,那么您可以使用 MIN & MAX 并按值分组,例如

SELECT   MIN(ts) AS [Start]  ,
         MAX(ts) AS [End]    , 
         Value
FROM     Table
GROUP BY Value
于 2017-04-26T10:11:00.083 回答