Как мне сделать "group by" частичное совпадение

у меня есть таблица в SQL-server с projectcodes и подпроектными кодами в тех же полях.

структуре что-то вроде этого

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

как мне сделать выбор, как это

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

Я хочу, чтобы выход group by A100 и A100.01 и A100.x вместе, а также A112 + A112.x

как мне это сделать?

я не контролирую структуру таблицы.

3 ответов


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

если код проекта всегда следует одному и тому же шаблону (cnnn / cnnn.nn) вы можете просто получить первые четыре символа:

group by substring(projectcode, 1, 4)

возможно, это сработает:

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