combiner des lignes pour des valeurs en double

J'essaye actuellement de countr combien de fois la catégorie d'un article apparaît dans une table de billet.
Le problème est que les catégories ont des sous-catégories et qu'elles sont toutes listées comme une seule string dans la table ("Cat1> Subcat1", "Cat1> Subcat2", etc).

Ce que j'ai fait jusqu'ici est géré pour get toutes les catégories distinctes énumérées, mais je veux enlever toutes les sous-catégories des résultats et combiner n'importe quels doubles.

À titre d'exemple, j'ai les catégories et dénombrements suivants:

Catégorie | 13
Catégorie> Subcat1 | 14
Catégorie> Subcat2 | 3

Ce que je veux voir c'est:

Catégorie | 30

Jusqu'à présent, j'ai réussi à supprimer les sous-catégories, mais la ligne réelle est essentiellement dupliquée avec des valeurs différentes:

Catégorie | 13
Catégorie | 14 Catégorie | 3

Voici mon code actuel:

SELECT CASE WHEN CHARINDEX(' >',SUBSTRING(KM2.GENERATEDCATS,16,20))=0 THEN SUBSTRING(KM2.GENERATEDCATS,16,20) ELSE SUBSTRING(SUBSTRING(KM2.GENERATEDCATS,16,20),1,CHARINDEX(' >',SUBSTRING(KM2.GENERATEDCATS,16,20))) END AS "Final", COUNT(KM2.GENERATEDCATS) AS "Count" FROM INCIDENTSM1 AS SD LEFT JOIN KMDOCUMENTM1 AS KM1 ON SD.CBA_KPF_ID=KM1.ID LEFT JOIN KMDOCUMENTA2 AS KM2 ON KM1.ID=KM2.ID GROUP BY KM2.GENERATEDCATS ORDER BY Count DESC 

Légende:

INCIDENTSM1 – Table des tickets
KMDOCUMENTM1 – Table d'article
KMDOCUMENTA2 – Catégories (séparées de la table principale)
GENERATEDCATS – Colonne Catégorie

Est-il possible de combiner toutes ces lignes de catégorie en une seule avec un nombre total?

Essayez de GROUP BY le nom de catégorie extrait:

 SELECT CASE WHEN CHARINDEX(' >',SUBSTRING(KM2.GENERATEDCATS,16,20))=0 THEN SUBSTRING(KM2.GENERATEDCATS,16,20) ELSE SUBSTRING(SUBSTRING(KM2.GENERATEDCATS,16,20),1, CHARINDEX(' >',SUBSTRING(KM2.GENERATEDCATS,16,20))) END AS "Final", COUNT(KM2.GENERATEDCATS) AS "Count" FROM INCIDENTSM1 AS SD LEFT JOIN KMDOCUMENTM1 AS KM1 ON SD.CBA_KPF_ID=KM1.ID LEFT JOIN KMDOCUMENTA2 AS KM2 ON KM1.ID=KM2.ID GROUP BY CASE WHEN CHARINDEX(' >',SUBSTRING(KM2.GENERATEDCATS,16,20))=0 THEN SUBSTRING(KM2.GENERATEDCATS,16,20) ELSE SUBSTRING(SUBSTRING(KM2.GENERATEDCATS,16,20),1,CHARINDEX(' >', SUBSTRING(KM2.GENERATEDCATS,16,20))) END ORDER BY Count DESC