try something likeSELECT ROW_NUMBER() OVER (PARTITION BY ip ORDER BY Date_server ASC) AS Rn, * INTO #TempFROM Table1WHERE Date_server> = '2011-10-03'AND Date_server < '2011-10-04';With VisitorsAS(SELECT Rn,Date_server , IP,CAST(IP AS varchar(100)) AS DistVisitFROM #TempWHERE Rn=1UNION ALLSELECT t.Rn,t.Date_server,t.IP,CAST(CASE WHEN DATEDIFF(mi,v.Date_server,t.Date_server) > 30 THEN t.IP + CAST(t.Rn AS varchar(10)) ELSE t.IP END AS varchar(100))FROM Visitors vINNER JOIN #Temp tON t.IP = v.IPAND t.Rn = v.Rn + 1)SELECT COUNT(DISTINCT DistVisit)FROM VisitorsDROP TABLE #Temp
------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/