Comment faire une correspondance partielle `group by`

J'ai une table dans le server SQL avec les codes de projet et les sous-projets dans les mêmes champs.

La structure est quelque chose comme ça

+----+------+-------------+-------+--------+--------+ | id | date | projectcode | debit | credit | budget | +----+------+-------------+-------+--------+--------+ | 1 | bla | A100 | bla | 2 | bla | A100.01 | | 3 | bla | A112 | | 4 | bla | A112.02 

Comment puis-je faire un tel choix

 SELECT projectcode , sum(debit) as debit , sum(credit) as credit , sum(budget) as budget FROM table1 GROUP BY -insert-answer-here- 

Je veux que la sortie se group by A100 et A100.01 et A100.x set ainsi que A112 + A112.x

Comment puis-je faire cela?

Je n'ai aucun contrôle sur la structure de la table.

 GROUP BY LEFT(projectcode ,CHARINDEX('.',projectcode + '.')-1) 

Si le code du projet suit toujours le même model (cnnn / cnnn.nn), vous pouvez simplement get les quatre premiers caractères:

 group by subssortingng(projectcode, 1, 4) 

Peut-être que cela fonctionnerait:

 SELECT Subssortingng(projectcode, 1, 4) as Project , sum(debit) as debit , sum(credit) as credit , sum(budget) as budget FROM table1 GROUP BY Subssortingng(projectcode, 1, 4)