Ce n'est pas super efficace, mais en supposant que les adresses sont stockées dans une colonne varchar nommée IPAddress
, vous pouvez faire:
SELECT
SUBSTRING(IPAddress, 1, LEN(IPAddress) - CHARINDEX('.',REVERSE(IPAddress))),
COUNT(*)
FROM
...
GROUP BY
SUBSTRING(IPAddress, 1, LEN(IPAddress) - CHARINDEX('.',REVERSE(IPAddress)))
Cela n'a pas été testé, donc je peut être désactivé par quelque part ou manquant une parenthèse.
L'idée de base est que vous voulez couper la fin en trouvant le dernier point, et pour trouver le dernier point vous inversez plutôt la chaîne et trouvez le premier point, ce que fera CHARINDEX
assez facilement. Pour transformer la position "premier point" en position "dernier point" dans la chaîne d'origine, vous soustrayez la position de la longueur d'origine.
(Si mon hypothèse est fausse et il ne sont pas stockées sous forme de texte, vous avez peu de chances d'obtenir une réponse significative à moins que vous donnez aussi le type de données.)
Quelle est la structure de stockage de la colonne contenant les adresses IP? –