【发布时间】:2016-04-11 15:21:59
【问题描述】:
我有一个脚本,每 10 分钟运行一次,并返回包含过去 24 小时事件的表格(由脚本运行时间标记)
ID Name TimeOfEvent EventCategory TeamColor
1 Verlene Bucy 2015-01-30 09:10:00.000 1 Blue
2 Geneva Rendon 2015-01-30 09:20:00.000 2 Blue
3 Juliane Hartwig 2015-01-30 09:25:00.000 3 Blue
4 Vina Dutton 2015-01-30 12:55:00.000 2 Red
5 Cristin Lewis 2015-01-30 15:50:00.000 2 Red
6 Reiko Cushman 2015-01-30 17:10:00.000 1 Red
7 Mallie Temme 2015-01-30 18:35:00.000 3 Blue
8 Keshia Seip 2015-01-30 19:55:00.000 2 Blue
9 Rosalia Maher 2015-01-30 20:35:00.000 3 Red
10 Keven Gabel 2015-01-30 21:25:00.000 3 Red
现在我想根据这些条件选择两组名称:
1) 从过去 24 小时内有 4 条或更多记录的同一 EventCategory 中选择名称。
2) 从过去 1 小时内有 2 条或更多记录的相同 EventCategory 和相同 TeamColor 中选择名称。
所以我的结果是:
4+per24h: Geneva Rendon, Vina Dutton, Cristin Lewis, Keshia Seip EventCategory = 2
4+per24h: Juliane Hartwig, Mallie Temme, Rosalia Maher, Keven Gabel EventCategory = 3
2+per1h: Rosalia Maher, Keven Gabel EventCategory = 3, TeamColor = Red
对于第一个,我写了这个:
SELECT mt.EventCategory, MAX(mt.[name]), MAX(mt.TimeOfEvent), MAX(mt.TeamColor)
FROM #mytable mt
GROUP BY mt.EventCategory
HAVING COUNT(mt.EventCategory) >= 4
因为我不关心实际时间,只要它在过去 24 小时内(而且总是如此),但我很难将名称塞入一行。
第二部分,我不知道该怎么做。因为结果需要具有相同的 EventCategory 和 TeamColor 并且还需要被一小时括号限制。
【问题讨论】:
标签: tsql sql-server-2005 aggregate