CREATE TABLE #Building_Information ( Building_Name VARCHAR(50) ,Subnet VARCHAR(15));INSERT INTO #Building_Information (Building_Name, Subnet)VALUES ('Building 1', '192.168.1.%'), ('Building 2', '192.168.2.%'), ('Building 3', '192.168.3.%')SELECT * FROM #Building_InformationCREATE TABLE #Device_Information ( DeviceNum VARCHAR(50) ,IP_Address VARCHAR(15));INSERT INTO #Device_Information (DeviceNum, IP_Address)VALUES ('Device1', '192.168.1.2'), ('Device2', '192.168.1.3'), ('Device3', '192.168.2.2'), ('Device4', '192.168.3.1'), ('Device5', '192.168.3.2'), ('Device6', '192.168.3.3')SELECT * FROM #Device_Information
CREATE TABLE #Building_Information ( Building_Name VARCHAR(50) ,Subnet VARCHAR(15));INSERT INTO #Building_Information (Building_Name, Subnet)VALUES ('Building 1', '192.168.1.%'), ('Building 2', '192.168.2.%'), ('Building 3', '192.168.3.%')SELECT * FROM #Building_InformationCREATE TABLE #Device_Information ( DeviceNum VARCHAR(50) ,IP_Address VARCHAR(15));INSERT INTO #Device_Information (DeviceNum, IP_Address)VALUES ('Device1', '192.168.1.2'), ('Device2', '192.168.1.3'), ('Device3', '192.168.2.2'), ('Device4', '192.168.3.1'), ('Device5', '192.168.3.2'), ('Device6', '192.168.3.3')SELECT * FROM #Device_Information;SELECT *FROM #Building_Information bi INNER JOIN #Device_Information di ON (di.IP_Address LIKE bi.Subnet);SELECT bi.Building_Name, COUNT(di.DeviceNum) NumberOfDevicesFROM #Building_Information bi INNER JOIN #Device_Information di ON (di.IP_Address LIKE bi.Subnet)GROUP BY Building_Name;GODROP TABLE #Building_Information;DROP TABLE #Device_Information;GO
SELECT bi.Building_Name, COUNT(di.DeviceNum) NumberOfDevicesFROM #Building_Information biINNER JOIN #Device_Information di ON PARSENAME(bi.Subnet,4) = PARSENAME(di.IP_Address,4) AND PARSENAME(bi.Subnet,3) = PARSENAME(di.IP_Address,3) AND PARSENAME(bi.Subnet,2) = PARSENAME(di.IP_Address,2)GROUP BY Building_Name;