1

给定 MS SQL 中的以下表结构:

数据:

ID-----+EventDate-------------------+IP--------------+Count
1       2013-03-20 21:15:22.113 192.168.1.1      False
4       2013-03-21 21:15:22.113 192.168.1.1      True
5       2013-03-19 21:15:22.113 192.168.1.1      True
6       2013-03-19 21:15:22.113 192.168.1.1      False
7       2013-03-21 21:15:22.113 192.168.1.1      True
8       2013-03-19 21:15:22.113 192.168.1.1      True

我想编写一个查询,为每个唯一的 IP 地址返回一行,最低日期的第一个实例为“MinDate”,日期的最后一个实例(最近)为最大日期,计数为“ TRUE" 忽略错误计数记录。

谷歌搜索分组,并假设使用 min() 和 max() 作为日期表达式是正确的方法吗?

4

1 回答 1

1

我认为这应该使用GROUP BYIP工作。

SELECT COUNT(1) cnt,
   MIN(EventDate) MinEventDate,
   MAX(EventDate) MaxEventDate,
   IP
FROM YourTable
WHERE Count = 'True'
GROUP BY IP

您正在使用哪个 RDBMS -COUNT作为列名可能会被保留。

SQL 小提琴演示

于 2013-03-22T04:01:09.007 回答