2013-06-27 8 views
2

Я создаю отчет SSRS в SQL Server 2008. Полученная таблица сгруппирована на основе бизнес-единицы. Мое требование - показать общую сумму после каждой группы.Сумма записей групп SQL Server 2008

Вот запрос:

SELECT 
DATENAME(MONTH, A.scheduledstart) Months 
,A.scheduledstart ScheduledStart 
,B.name BusinessUnit 
,CASE WHEN FC.renre_topbrokername='Yes' THEN 'Broker' 
     WHEN FC.renre_typevendorpartner<>0 THEN 'Vendor' 
     WHEN FC.renre_typemediacontact<>0 THEN 'Media' 
     WHEN FC.renre_typeinvestmentmanager<>0 THEN 'Investment Manager' 
     WHEN FC.renre_typeclient<>0 THEN 'Client' 
     WHEN FC.renre_typeinvestor<>0 THEN 'Investor' 
     WHEN FC.renre_typemitigationresources<>0 THEN 'Mitigation' 
     WHEN FC.renre_typeriskaccountingsp<>0 THEN 'Risk/Accounting Services Provider' 
     WHEN FC.renre_typeindustryanalyst<>0 THEN 'Industry Analyst' 
     WHEN FC.renre_typeratingagencies<>0 THEN 'Rating Agency' 
     WHEN FC.renre_typecommunity<>0 THEN 'Community' 
     WHEN FC.renre_typeresearchprovider<>0 THEN 'Research Provider' 
     WHEN FC.renre_typefederal<>0 THEN 'Federal, State or Local Regulator' 
     WHEN FC.renre_typeindustryassociation<>0 THEN 'Industry Association' 
     WHEN FC.renre_typeboardmember<>0 THEN 'Board Member' 
     WHEN FC.renre_typeinvestmentbank<>0 THEN 'Investment Bank' 
END AttendeeType 
,AP.partyidname Name 
,CASE WHEN FC.renre_keycontact=0 THEN 'No' ELSE 'Yes' END isKeyContact 
,A.owneridname Owner 
,COUNT(AP.partyidname) AttendeeCount 

from 
FilteredAppointment A JOIN FilteredBusinessUnit B 
ON A.owningbusinessunit=B.businessunitid 
JOIN FilteredActivityParty AP ON A.activityid = AP.activityid 
JOIN FilteredContact FC ON FC.contactid = AP.partyid 

WHERE 
A.scheduledstart='2014-05-31 15:00:00.000' 
and 
AP.participationtypemask=6 

group by B.name,A.scheduledstart,AP.partyidname, 
CASE WHEN FC.renre_topbrokername='Yes' THEN 'Broker' 
     WHEN FC.renre_typevendorpartner<>0 THEN 'Vendor' 
     WHEN FC.renre_typemediacontact<>0 THEN 'Media' 
     WHEN FC.renre_typeinvestmentmanager<>0 THEN 'Investment Manager' 
     WHEN FC.renre_typeclient<>0 THEN 'Client' 
     WHEN FC.renre_typeinvestor<>0 THEN 'Investor' 
     WHEN FC.renre_typemitigationresources<>0 THEN 'Mitigation' 
     WHEN FC.renre_typeriskaccountingsp<>0 THEN 'Risk/Accounting Services Provider' 
     WHEN FC.renre_typeindustryanalyst<>0 THEN 'Industry Analyst' 
     WHEN FC.renre_typeratingagencies<>0 THEN 'Rating Agency' 
     WHEN FC.renre_typecommunity<>0 THEN 'Community' 
     WHEN FC.renre_typeresearchprovider<>0 THEN 'Research Provider' 
     WHEN FC.renre_typefederal<>0 THEN 'Federal, State or Local Regulator' 
     WHEN FC.renre_typeindustryassociation<>0 THEN 'Industry Association' 
     WHEN FC.renre_typeboardmember<>0 THEN 'Board Member' 
     WHEN FC.renre_typeinvestmentbank<>0 THEN 'Investment Bank' 
END 
,FC.renre_keycontact 
,CASE WHEN FC.renre_keycontact=0 THEN 'No' ELSE 'Yes' END 
,A.owneridname 

Вот выход:

enter image description here

На 8-й строке вывода мне нужно напечатать общее количество записей в этой группе (т.е. 7) под колонкой AttendeeCount. Могут быть несколько групповых наборов, поэтому в этом случае общее количество будет после каждой группы.

Пожалуйста, помогите.

+1

Отъезд 'GROUP BY' с' ROLLUP', 'CUBE' и' GROUPING SETS' HTTP : //msdn.microsoft.com/en-us/library/bb522495 (v = sql.105) .aspx –

ответ

2

В SQLServer2008 для работы наборы результатов, вы можете использовать предложения GROUP BY с GROUPING НАБОРЫ

SELECT DATENAME(MONTH, A.scheduledstart) Months 
     ,A.scheduledstart ScheduledStart 
     ,B.name BusinessUnit 
     ,CASE WHEN FC.renre_topbrokername='Yes' THEN 'Broker' 
      WHEN FC.renre_typevendorpartner<>0 THEN 'Vendor' 
      WHEN FC.renre_typemediacontact<>0 THEN 'Media' 
      WHEN FC.renre_typeinvestmentmanager<>0 THEN 'Investment Manager' 
      WHEN FC.renre_typeclient<>0 THEN 'Client' 
      WHEN FC.renre_typeinvestor<>0 THEN 'Investor' 
      WHEN FC.renre_typemitigationresources<>0 THEN 'Mitigation' 
      WHEN FC.renre_typeriskaccountingsp<>0 THEN 'Risk/Accounting Services Provider' 
      WHEN FC.renre_typeindustryanalyst<>0 THEN 'Industry Analyst' 
      WHEN FC.renre_typeratingagencies<>0 THEN 'Rating Agency' 
      WHEN FC.renre_typecommunity<>0 THEN 'Community' 
      WHEN FC.renre_typeresearchprovider<>0 THEN 'Research Provider' 
      WHEN FC.renre_typefederal<>0 THEN 'Federal, State or Local Regulator' 
      WHEN FC.renre_typeindustryassociation<>0 THEN 'Industry Association' 
      WHEN FC.renre_typeboardmember<>0 THEN 'Board Member' 
      WHEN FC.renre_typeinvestmentbank<>0 THEN 'Investment Bank' END AttendeeType 
     ,AP.partyidname Name 
     ,CASE WHEN FC.renre_keycontact=0 THEN 'No' ELSE 'Yes' END isKeyContact 
     ,A.owneridname Owner 
     ,COUNT(AP.partyidname) AttendeeCount 
FROM FilteredAppointment A JOIN FilteredBusinessUnit B 
    ON A.owningbusinessunit=B.businessunitid 
    JOIN FilteredActivityParty AP ON A.activityid = AP.activityid 
    JOIN FilteredContact FC ON FC.contactid = AP.partyid 
WHERE A.scheduledstart='2014-05-31 15:00:00.000' 
    AND AP.participationtypemask=6 
GROUP BY GROUPING SETS(
    (B.name,A.scheduledstart,AP.partyidname, 
    CASE WHEN FC.renre_topbrokername='Yes' THEN 'Broker' 
     WHEN FC.renre_typevendorpartner<>0 THEN 'Vendor' 
     WHEN FC.renre_typemediacontact<>0 THEN 'Media' 
     WHEN FC.renre_typeinvestmentmanager<>0 THEN 'Investment Manager' 
     WHEN FC.renre_typeclient<>0 THEN 'Client' 
     WHEN FC.renre_typeinvestor<>0 THEN 'Investor' 
     WHEN FC.renre_typemitigationresources<>0 THEN 'Mitigation' 
     WHEN FC.renre_typeriskaccountingsp<>0 THEN 'Risk/Accounting Services Provider' 
     WHEN FC.renre_typeindustryanalyst<>0 THEN 'Industry Analyst' 
     WHEN FC.renre_typeratingagencies<>0 THEN 'Rating Agency' 
     WHEN FC.renre_typecommunity<>0 THEN 'Community' 
     WHEN FC.renre_typeresearchprovider<>0 THEN 'Research Provider' 
     WHEN FC.renre_typefederal<>0 THEN 'Federal, State or Local Regulator' 
     WHEN FC.renre_typeindustryassociation<>0 THEN 'Industry Association' 
     WHEN FC.renre_typeboardmember<>0 THEN 'Board Member' 
     WHEN FC.renre_typeinvestmentbank<>0 THEN 'Investment Bank' 
    END 
    ,FC.renre_keycontact 
    ,CASE WHEN FC.renre_keycontact=0 THEN 'No' ELSE 'Yes' END 
    ,A.owneridname), (B.name)) 
2

Вы должны сохранить набор данных запроса так, как он есть на данный момент, и построить группировку и агрегацию в сам отчет SSRS.

Вы опрошены данные из базы данных, нужно просто использовать эти данные в отчете теперь ...

Создать отчет и добавить таблицу (или матрица, если это необходимо, но не выглядит как Это). Создайте набор данных, используя ваш запрос выше. Свяжите таблицу с набором данных, а затем добавьте группу, щелкнув правой кнопкой мыши по таблице и добавив группировку в соответствии с вашими требованиями к группировке. Затем SSRS автоматически добавляет итоговые суммы и т. Д. Для вас.

+0

Согласовано, все необходимые данные были собраны из данных в базе данных, теперь их можно обрабатывать на уровне отчета для отображения данных требуемым образом. В этом случае добавление суммарных сумм, сгруппированных по месяцам (по виду вещей). Вы можете видеть в моей ссылке, что я добавил суммы к году на уровне отчета: http://stackoverflow.com/questions/8806386/ssrs-bids-summing- а-сумма к продукции-а-сумма – JsonStatham

Смежные вопросы