Вы можете конвертировать IP в число с помощью этой функции:
--Author: Faisal Khan (http://www.stardeveloper.com)
CREATE FUNCTION [dbo].[ConvertIPToLong](@IP varchar(15))
RETURNS bigint
AS
BEGIN
DECLARE @Long bigint
SET @Long = CONVERT(bigint, PARSENAME(@IP, 4)) * 256 * 256 * 256 +
CONVERT(bigint, PARSENAME(@IP, 3)) * 256 * 256 +
CONVERT(bigint, PARSENAME(@IP, 2)) * 256 +
CONVERT(bigint, PARSENAME(@IP, 1))
RETURN (@Long)
END
(из здесь )
, а затем
select reqid, max([dbo].ConvertIPToLong(IPAddress)) as maxIP
from your_table
group by reqID
РЕДАКТИРОВАТЬ: Из того же источника вы можете использовать
-- Author: Faisal Khan (http://www.stardeveloper.com)
CREATE FUNCTION [dbo].[ConvertLongToIP](@Long bigint)
RETURNS varchar(15)
AS
BEGIN
DECLARE @IP varchar(15)
DECLARE @TempLong bigint
DECLARE @Temp bigint
SET @TempLong = @Long
SET @Temp = @TempLong / (256 * 256 * 256)
SET @TempLong = @TempLong - (@Temp * 256 * 256 * 256)
SET @IP = CONVERT(varchar(3), @Temp) + '.'
SET @Temp = @TempLong / (256 * 256)
SET @TempLong = @TempLong - (@Temp * 256 * 256)
SET @IP = @IP + CONVERT(varchar(3), @Temp) + '.'
SET @Temp = @TempLong / 256
SET @TempLong = @TempLong - (@Temp * 256)
SET @IP = @IP + CONVERT(varchar(3), @Temp) + '.'
SET @Temp = @TempLong
SET @TempLong = @TempLong - @Temp
SET @IP = @IP + CONVERT(varchar(3), @Temp)
RETURN (@IP)
END
и запрос будет
select reqid, [dbo].ConvertLongToIP(max([dbo].ConvertIPToLong(IPAddress))) as maxIP
from your_table
group by reqID