У меня есть таблица уязвимостей с использованием SQL сервера, когда я выполняю следующий запрос
select * from table
Вывод выглядит так.
| Name | HostName | Week |
| ------------- |------------| -------|
| java | Hosta | 1 |
| java | Hostb | 1 |
| java | Hostb | 2 |
| Ansible | Hosta | 1 |
| Ansible | Hosta | 2 |
| Ansible | Hosta | 3 |
| Ansible | Hostb | 3 |
Моя цель - сгенерировать выходные данные, которые сводят недели в таблицы столбцов, а значения - это число хостов для данной уязвимости на этой неделе.
| Vulnerability | Week 1 | Week 2 | Week 3 |
| ------------- |--------| -------| -------|
| java | 2 | 1 | 0 |
| Ansible | 1 | 1 | 2 |
Моей первоначальной попыткой было сделать
select * from table
PIVOT(
count(HostName)
For week in ([1],[2],[3])
) AS OUT
Но выходные данные имели правильную компоновку, но неверные данные, как если бы он считал только первое вхождение. Требуется ли поправка к счетному сроку или мой подход неправильный?