У меня есть большая таблица базы данных, на которой мне нужно выполнить динамическое действие с помощью Microsoft SQL Server.
Из результата:
badge | name | Job | KDA | Match
- - - - - - - - - - - - - - - -
T996 | Darrien | AP | 3.0 | 20
T996 | Darrien | ADC | 2.8 | 16
T996 | Darrien | TOP | 5.0 | 120
Для результата, подобного этому, с помощью SQL:
badge | name | AP_KDA | AP_Match | ADC_KDA | ADC_Match | TOP_KDA | TOP_Match
- - - - - - - - -
T996 | Darrien | 3.0 | 20 | 2.8 | 16 | 5.0 | 120
Даже если есть 30 строк, он также объединяется в одну строку с 60 столбцами.
В настоящее время я могу сделать это с помощью жесткого кодирования (см. пример ниже), но не динамически.
Select badge,name,
(
SELECT max(KDA)
FROM table
WHERE (h.badge = badge) AND (h.name = name)
AND (Job = 'AP')
) AP_KDA,
(
SELECT max(Match)
FROM table
WHERE (h.badge = badge) AND (h.name = name)
AND (Job = 'AP')
) AP_Match,
(
SELECT max(KDA)
FROM table
WHERE (h.badge = badge) AND (h.name = name)
AND (Job = 'ADC')
) ADC_KDA,
(
SELECT max(Match)
FROM table
WHERE (h.badge = badge) AND (h.name = name)
AND (Job = 'ADC')
) ADC_Match,
(
SELECT max(KDA)
FROM table
WHERE (h.badge = badge) AND (h.name = name)
AND (Job = 'TOP')
) TOP_KDA,
(
SELECT max(Match)
FROM table
WHERE (h.badge = badge) AND (h.name = name)
AND (Job = 'TOP')
) TOP_Match
from table h
Мне нужен оператор MSSQL, который позволяет мне объединить несколько строк в одну строку. Содержимое столбца 3 (Job
) будет сочетаться с заголовками столбцов 4 и 5 (KDA
и Match
) и станет новым столбцом.
Итак, если для Job
существует 6 различных значений (скажем Job1
через Job6
), тогда результат будет иметь 12 столбцов, например: Job1_KDA
, Job1_Match
, Job2_KDA
, Job2_Match
> и т.д., сгруппированные по значку и имени.
Мне нужно утверждение, что это может проходить через данные столбца 3, поэтому мне не нужно жестко кодировать (повторять запрос для каждого возможного значения Job
) или использовать временную таблицу.