2013-06-27 130 views
2

我正在SQL Server 2008中創建一個SSRS報告。結果表根據業務單位進行分組。我的要求是在每組設置後顯示總金額。組記錄總和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

退房'集團BY'用'ROLLUP','CUBE'和'GROUPING SETS' HTTP ://msdn.microsoft.com/en-us/library/bb522495(v = sql.105).aspx –

回答

2

在SQLServer2008的操縱套的成績,您可以使用GROUP BY子句分組集

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-一個求和到農產品-A-總和 – JsonStatham