У меня небольшая проблема с запросом, который я пытаюсь разработать.
Вот как выглядит моя таблица: -
Таблица учетных записей
ClientNo        AccountType          Balance
  1234             SUP1                25
  1234            SUP1.1               35
  1234             RET1                20
  1111             SUP1                50
  1111             DIS4                60
Я пытаюсь получить результат, который выглядит следующим образом: -
ClientNo   TotSupBal   TotSuppAccts   TotRetBal  TotRetAccts  TotDisBal   TotDisAccts
 1234         70             2           20          1            0             0
 1111         50             1            0          0            60            1
По сути, клиент может находиться в таблице «Учетные записи» много раз, поскольку у каждого клиента может быть много учетных записей.
Типы учетных записей всегда будут начинаться с одних и тех же символов, однако в зависимости от того, сколько из этих учетных записей, число может быть любым, а последующие учетные записи всегда будут десятичными, а затем числом... Например. первая учетная запись SUP — это просто SUP1, однако следующая учетная запись SUP будет SUP1.1, затем SUP1.2 и т. д.
Я написал следующий запрос
SELECT ClientNo, SUM(Balance) AS TotSupBal, COUNT(AccountType) AS TotSuppAccts
FROM Account
WHERE (AccountType LIKE 'SUP1.%') OR (AccountType = 'SUP1')
GROUP BY ClientNo
*Причина, по которой существует 2 разных предложения WHERE, заключается в том, что я не могу просто использовать SUP1%, поскольку существуют такие учетные записи, как SUP12, которые не совпадают с SUP1.
Этот запрос работает нормально, однако он создает список только для тех, у кого тип учетной записи SUP. Как я могу получить одинаковый вывод, но в нескольких столбцах для каждого типа учетной записи?
Я использую Microsoft SQL 2008 R2.
 
                                                                     
                                                                    