#sql #sql-server-2008
#sql #sql-server-2008
Вопрос:
У меня есть таблица со значениями
ID BarID FName LName ColA ColB ColC
1 22 Jon Carr 0 2 1
2 23 Don Brown 1 3 2
3 23 Don Brown 2 1 2
4 24 A B 0 2 1
5 24 A B 2 3 1
6 24 A B 1 2 3
Имя таблицы равно Temp
Я хочу преобразовать эту таблицу во что-то вроде этого
ID BarID FName LName ColA ColB ColC
1 22 Jon Carr 0 2 1
2 23 Don Brown 3 4 4
4 24 A B 3 7 5
Суммируются последние 3 столбца ( ColA ColB ColC
) повторяющихся строк (duplicate BarID
) (суммирование)
Какой sql-запрос я могу написать в sql Server для достижения этого?
Комментарии:
1. У всех нас есть крайние сроки, и мы все здесь бесплатно. Если вы скажете нам, что это срочно, это вам не поможет.
2. Предполагаем ли мы, что все
FName
иLName
значения равны для любого заданногоBarID
?3. Пожалуйста, обратите внимание, как работает этот сайт: meta.stackexchange.com/q/7237/27535
Ответ №1:
Вам нужно использовать ГРУППУ ПО
SELECT
min(id) AS ID,
BarID,
FName,
LName,
sum(ColA) AS ColA,
sum(ColB) AS ColB,
sum(ColC) AS ColC
FROM
Temp
GROUP BY
BarID, FName, LName
Комментарии:
1. Все ответы правильные, но в этом есть небольшая деталь … он содержит правильные псевдонимы столбцов
Ответ №2:
SELECT
MIN(ID), BarID, FName, LName, SUM(ColA), SUM(ColB), SUM(ColC)
FROM
Temp
GROUP BY
BarID, FName, LName
Ответ №3:
Должно быть довольно простым с GROUP BY
предложением:
SELECT
MIN(ID) AS 'ID',
BarID, FName, LName,
SUM(ColA) AS 'ColA',
SUM(ColB) AS 'ColB',
SUM(ColC) AS 'ColC'
FROM dbo.Temp
GROUP BY BarID, FName, LName
Это суммирует столбцы A, B и C и группирует по BarID, FName, LName