使用SQL Server,我有一个对设备集合建模的数据库表。每个设备控制一个或多个区域,每个区域可以离线或在线。
我不能遇到同一地区在多个设备上在线的情况。
表“ FEP”模式为:
region_address [int]
region [int]
online [bit]
样本数据:
region_address region online
3001100 100 0
3002100 100 1
3002200 200 0
3002241 241 0
3001123 123 0
3003123 123 1
3928999 999 1
3921999 999 1
我需要此查询来将区域999列为在两个(或更多)列出的设备上处于联机状态。
我使用一个简单的select * from fep order by region
来直观地查看是否有两个连续的行的online = 1,但这并不表示仅冲突区域。
答案 0 :(得分:2)
我会做些简单
SELECT region
FROM FEP
WHERE online = 1
GROUP BY region
HAVING COUNT(*) > 1
做Having count(distinct online)=1
的问题是说有3台设备,有2台在线,而1台没有。因此,count(在线区别)等于2,但是仍然有多个设备在线,您不会被发现。上面说明了这一点,即使设备中有NULL值,它也考虑了设备(假设条件是至少有2台设备在线)