Вы можете использовать следующее решение, используя PIVOT
:
SELECT Type, [String], [Int], [Double], [Float]
FROM (
SELECT Type, Value
FROM table_name
) st PIVOT (
COUNT(Value)
FOR Value IN ([String], [Int], [Double], [Float])
) AS pt;
Как добавить столбец с суммой значений каждой строки и строку с суммой значений каждого столбца?
SELECT Type, [String], [Int], [Double], [Float], TotalRow
FROM (
SELECT Type, Value, COUNT(Value) OVER (PARTITION BY Type) AS TotalRow
FROM test
) st PIVOT (
COUNT(Value)
FOR Value IN ([String], [Int], [Double], [Float])
) pt
UNION ALL
SELECT 'Total', SUM([String]), SUM([Int]), SUM([Double]), SUM([Float]), SUM(TotalRow)
FROM (
SELECT Type, [String], [Int], [Double], [Float], TotalRow
FROM (
SELECT Type, Value, COUNT(Value) OVER (PARTITION BY Type) AS TotalRow
FROM test
) st PIVOT (
COUNT(Value)
FOR Value IN ([String], [Int], [Double], [Float])
) pt
)t;
демо на dbfiddle.uk