выберите данные и, если дублирующий идентификатор добавьте (сложите) данные - PullRequest
1 голос
/ 07 октября 2011

Я использую TSQL для выбора данных из базы данных. Я хочу выделить все данные в таблице, но если идентификатор является дубликатом, добавьте (сложите) все столбцы «а» с одинаковым идентификатором и сделайте его всего одной строкой.

В выходных данных не должно быть повторяющихся идентификаторов.

    SELECT DISTINCT id,a,b FROM dbo.test WHERE 
   id not in (select id from dbo.test) CASE a WHEN a + a?? 

пример:

dbo.test
========
id  a  
1   4  
1   5 
2   3
3   2

output:

1 9 <-- two ids of 1 so column 'a' is added together.
2 3
3 2

1 Ответ

5 голосов
/ 07 октября 2011
SELECT ID, SUM(a) as a, SUM(b) as B
FROM MyTable
GROUP BY ID

Это то, для чего предназначена группировка и агрегирование!

К вашему сведению, так работает агрегация:

Когда вы группируете и агрегируете поля, выобъединяют записи в одну строку.

В вашем операционном файле вы хотели видеть SUM из A для каждого значения ID.Это то, что делает исходный запрос, который я разместил.

Вы также хотите включить B, которое является полем varchar, согласно вашим комментариям.

В этом случае вам нужнорешить, что делать с B.Поскольку вы группируете несколько строк вместе, существует (потенциально) несколько значений B на значение ID.Вам также необходимо:

  • Группировать по B, что добавит дополнительные строки
  • Применить агрегацию, например MAX(), MIN() и т. Д. К B
  • Исключить B из списка результатов.
...