У меня небольшая проблема с запросом, который я пытаюсь разработать.
Вот как выглядит моя таблица: -
Таблица учетных записей
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.