Суммировать агрегированные данные - PullRequest
4 голосов
/ 30 октября 2008

У меня есть таблица, подобная следующей:

SoftwareName    Count    Country
Project         15       Canada
Visio           12       Canada
Project         10       USA
Visio           5        USA

Как мне запросить его, чтобы получить сводную информацию вроде ...

SoftwareName    Canada    USA    Total
Project         15        10     25
Visio           12        5      17

Как это сделать в T-SQL?

Ответы [ 5 ]

6 голосов
/ 30 октября 2008
SELECT SoftwareName, 
  SUM( CASE Country WHEN 'Canada' THEN [Count] ELSE 0 END ) AS Canada,
  SUM( CASE Country WHEN 'USA'    THEN [Count] ELSE 0 END ) AS USA,
  SUM( [Count] ) AS Total
FROM [Table] 
GROUP BY SoftwareName;
3 голосов
/ 30 октября 2008

ОК ... Вот как это сделать, используя PIVOT:

SELECT Softwarename, Canada, USA, Canada + USA As TOTAL from SoftwareDemo 
PIVOT 
    (
     SUM([Count])
     FOR Country
     IN (Canada, USA)
    ) AS x


Softwarename                                       Canada      USA         TOTAL
-------------------------------------------------- ----------- ----------- -----------
Project                                            15          10          25
Visio                                              12          5           17

(2 row(s) affected)
1 голос
/ 30 октября 2008

в SQL 2005 или более поздней версии - ключевое слово SQL "Pivot", которое делает это за вас, Проверьте следующую ссылку:

http://msdn.microsoft.com/en-us/library/ms177410.aspx

1 голос
/ 30 октября 2008

Это называется поворотом таблицы. В вашем простом случае есть только две колонки; в общем, может быть около 200 стран, и в этом случае поворот становится довольно трудным.

В Интернете есть множество ресурсов, описывающих, как это сделать: Google для «сводной таблицы sql».

0 голосов
/ 15 сентября 2013

Я думаю, вы можете использовать эту ссылку:

Сумма уникальных записей - лучшая производительность, чем у курсора

и я думаю, что использование функции PIVOT имеет лучшую производительность SUM () функции оценки.!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...