Как суммировать группы и предоставлять итоги в отдельных столбцах? - PullRequest
1 голос
/ 15 декабря 2010

Я уже некоторое время смотрю на эту проблему, и хотя я знаю, что могу сделать это программно в LINQ.Я начал думать о решениях, которые могли бы масштабироваться, если бы это был большой набор данных.Я строю свой опыт работы с SQL и считаю, что есть способ получить результат без выполнения вставки.

У меня есть данные, которые выглядят так:

ids type    total
A01 x   1
A01 x   2
A01 x   3
A01 y   4
B01 y   2
B01 x   3
B01 y   1
C01 x   1
C01 y   2
C01 x   5
C01 y   6

ЧтоЯ хочу, чтобы данные выглядели так:

id  x total y total
A01 6   4
B01 3   3
C01 6   8

Я не верю в мои убеждения?

Ответы [ 2 ]

3 голосов
/ 15 декабря 2010
  ...
  SUM(CASE type WHEN'x' THEN total ELSE 0 END),
  SUM(CASE type WHEN 'y' THEN total ELSE 0 END)
   ...
  Group by
      Id

Извините, что затрудняюсь дать полный ответ по телефону

1 голос
/ 16 декабря 2010

Это называется сводной таблицей, и есть несколько способов сделать это.

Если вы используете SQL Server 2005 или более позднюю версию, оператор PIVOT ( MSDN ) аккуратный вариант:

select id, [x], [y]
from temp d
  PIVOT ( sum(total) for type in ([x],[y]) ) p
...