0

我正在寻找创建特殊视图的解决方案,但不知道如何解决它。:(

我尽量把它说清楚。为了更好地再现一次插图和脚本。

数据结构:

该数据库是一个 Azure 数据库(我认为它的 SQL Server 2005)我有下表。(请不要批评结构,它是给的而不是我的)

CREATE TABLE [dbo].[DeviceData](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[DeviceID] [bigint] NOT NULL,
[TimeStamp] [datetime] NOT NULL,
[Error] [nvarchar](50) NULL,
CONSTRAINT [PrimaryKey_e149e28f-5754-4889-be01-65fafeebce16] PRIMARY KEY CLUSTERED 
(
 [DeviceID] ASC,
 [TimeStamp] ASC
))

-

DeviceData
-------------------------
ID (identity)  | Int
DeviceID (PK)  | Int
TimeStamp (PK) | DateTime
Error          | String

样本数据:

INSERT INTO [dbo].[DeviceData]
       ([DeviceID]
       ,[TimeStamp]
       ,[Error])
 VALUES
       (
         (1, '2013.01.01 10:00:00', "Error 1"),
         (2, '2013.01.01 10:00:00', "Error 1"),
         (3, '2013.01.01 10:00:00', "Error 1"),
         (1, '2013.01.01 10:01:00', "Error 1"),
         (2, '2013.01.01 10:01:00', null),
         (1, '2013.01.01 10:02:00', "Error 2"),
         (3, '2013.01.01 10:30:00', null)
       )

-

ID | DeviceID  | TimeStamp           | Error
-------------------------------------------------------------
1  | 1         | 2013.01.01 10:00:00 | Error 1
2  | 2         | 2013.01.01 10:00:00 | Error 1
3  | 3         | 2013.01.01 10:00:00 | Error 1
4  | 1         | 2013.01.01 10:01:00 | Error 1
5  | 2         | 2013.01.01 10:01:00 | null
6  | 1         | 2013.01.01 10:02:00 | Error 2
7  | 3         | 2013.01.01 10:30:00 | null

想要的结果

我现在想按设备和 [Error] 字段上的“子组”对数据进行分组。

我不知道如何用word来描述它,所以请看示例结果。

DeviceID  | Begin               | End                 | Error
---------------------------------------------------------------
1         | 2013.01.01 10:00:00 | 2013.01.01 10:02:00 | Error 1
2         | 2013.01.01 10:00:00 | 2013.01.01 10:01:00 | Error 1
1         | 2013.01.01 10:02:00 | 2013.01.01 10:02:00 | Error 2
3         | 2013.01.01 10:00:00 | 2013.01.01 10:30:00 | Error 1

如果有人能给我一个提示,我可以如何以最有效的方式解决我的观点,那将是非常好的。

来自德国 Steffen 的问候和感谢

4

1 回答 1

0

我们可能不得不解决这个问题,因为我在这里仍然缺少一些逻辑部分。

select deviceid ,min(timestamp) as begin, max(timestamp) as end, error
from devicedata
group by deviceid,error

这将返回接近您想要的结果,但是它不会将 null 错误与错误 1 ​​组合在一起。这就是您在这里面临的“混乱”……这是如何处理这些 null 并将它们与正确的错误相关联. 第 8 行是否可能存在为:

8  | 1         | 2013.01.01 11:30:00 | null

如果这种情况可能发生,您如何知道 null 与哪条记录相关?

于 2013-10-01T23:24:36.737 回答