У меня есть таблица с большой базой данных, на которой мне нужно выполнить динамическое действие с использованием Microsoft SQL Server.Объединить несколько строк в несколько столбцов динамически в 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
) и стать новой колонкой.
Так что, если есть 6 различных значений для Job
(скажем Job1
через Job6
), то результат будет иметь 12 столбцов, например .: Job1_KDA
, Job1_Match
, Job2_KDA
, Job2_Match
и т.д., сгруппированных по значком и названием.
Мне нужна инструкция, которая может проходить через данные столбца 3, поэтому мне не нужно жестко кодировать (повторить запрос для каждого возможного значения Job
) или использовать временную таблицу.
Привет всем, вопрос, который я задаю, представляет собой инструкцию mssql, которая позволяет мне комбинировать несколько строк в одну строку. Содержимое столбца 3 будет объединено с заголовком столбца 4,5 и станет новым столбцом. Поэтому, если в столбце 3 имеется 6 различных данных, тогда будет создано 12 столбцов. например: Job1_KDA, Job1_Match, Job2_KDA, Job2_Match, Job3_KDA, Job3_Match, Job4_KDA, Job4_Match – chabu
Здесь есть много связанных вопросов. Найдите '[sql-server] pivot' для нескольких примеров выполнения именно того, что вы просите. Например, [этот вопрос] (http://stackoverflow.com/q/24470/62576) выполняет операцию аналогичного типа (хотя он преобразует шесть строк в три). –