Прежде всего, вам нужно объявить переменную cols, которая даст вам все различные типы кошельков, которые будут использоваться позже в запросе:
DECLARE @cols AS NVARCHAR(max) =
Stuff((SELECT DISTINCT ', ' + Convert(nvarchar, WalletType)
FROM [IHC].[dbo].[TABLENAMEHERE]
FOR XML PATH ('')), 1, 2, '')
Что он делает, он получает все отдельные WalletTypes через запятую. как XML Path дает вам данные в XML, так что мы можем играть с ними.
затем используйте оператор PIVOT, как это предлагают некоторые люди. здесь:
select *
from
(
select [state], [WalletType], count([WalletType]) as count FROM [IHC].[dbo].[TABLENAMEHERE]
group by [state], [WalletType]
) SourceTable
pivot
(
sum(count)
for [WalletType] in (@cols)
) piv;
первая часть этого запроса дает вам состояние, WalletType, типы 'Count of Wallet', сгруппированные по состоянию и типу кошелька, или, скажем, сломанный w.r.t State и тип кошелька
как это:
состояние WalletType count
1 106 4
2 106 2
1 112 1
2 112 2
теперь этот 'Count of Wallet' как count используется в функции PIVOT, чтобы получить СУММУ СЧЕТА w.r.t Типов кошелька, поэтому он суммирует количество w.r.t WalletType и дает окончательный результат
убедитесь, что вы используете его в динамическом запросе.