запрос sql server

#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