【发布时间】:2009-03-12 10:50:46
【问题描述】:
我有一个看起来像这样的表
CREATE TABLE MyTable(
[RecordID] [bigint] IDENTITY(1,1) NOT NULL,
[PortName] [nvarchar](50) NULL,
[ReceivedEvent] [datetime] NULL,
[SentEvent] [datetime] NULL,
);
然后数据可以是
RecordID | PortName | ReceivedEvent | SentEvent
1 | Port1 | 2009-10-20 10:20:00 | NULL
2 | Port2 | NULL | 2009-10-20 10:10:00
3 | Port2 | NULL | 2009-10-20 10:02:00
4 | Port2 | NULL | 2009-10-20 11:00:00
我现在需要对这张表提出两个问题:
1) 我需要计算按端口和日期(而不是时间)分组的行数。然而,日期是问题中的一个参数(在这种情况下,它可能是“2009-10-20”)。我还想要每个小时的最后一个“活动”
NumberOfRows | PortName | Hour | LastActivityInHour
2 | Port2 | 10 | 2009-10-20 10:10:00
1 | Port2 | 11 | 2009-10-20 11:00:00
1 | Port1 | 10 | 2009-10-20 10:20:00
2) 我还需要一个问题做同样的事情,但按天分组。正如我所说的,day 是一个传入参数。在这种情况下,它可能是“2009-10-20”
NumberOfRows | PortName | LastActivityInDay
3 | Port2 | 2009-10-20 11:00:00
1 | Port1 | 2009-10-20 10:20:00
【问题讨论】:
-
请注意,我对 SQL 进行了相当大的更改。您可能希望使用新代码而不是调整后的版本。 ;)
标签: sql-server tsql