2012-11-09 20 views
8

Ho quello che penso sia un problema abbastanza semplice, ma non posso per la vita di me capire come farlo (SSRS 2008 R2). Io sto usando un Tablix, come ho bisogno di visualizzare i dati di dettaglio (non solo aggregati)Riassunto Articoli gruppo in SSRS 2008 R2

ho righe di dati (spese di spedizione) e la distribuzione dei costi del lavoro

I dati (in forma abbreviata) nel rapporto è

 
TrackNo  ShipCost NoJobs   JobNo  Job Cost 
T1    10.00  1    J1   10.00 
T2    10.00  3    J2   3.33 
T2    10.00  3    J3   3.33 
T2    10.00  3    J4   3.33 

Quindi, TrackNo T1 può avere un lavoro associato ad esso e TrackNo T2 può avere 3 lavori associati. Ho quindi pro-rata i costi attraverso i posti di lavoro. Se ogni spedizione costa $ 10:

  • per il monitoraggio senza T1, lavoro senza J1 otterrà $ 10.00
  • per il monitoraggio senza T2, Lavoro J2, J3 & J4 sarà ogni ottenere $ 3,33

voglio avere un report drill down come questo:

 
TrackNo  Ship Total   No. Jobs   Job No    Job Total 
+ T1   10.00    1 
                J1     10.00 
+ T2   10.00    2               
                J2     3.33 
                J3     3.33 
                J4     3.33 

Nel mio report, il gruppo 1 sta tracciando no; il gruppo 2 (gruppo figlio) è il lavoro n.

 
TrackNo 
    JobNo 

Nave totale sulla relazione è First(Fields!ShipTotal.Value)

voglio sommare lo ShipTotal per l'intero report (non sommare i totali di posti di lavoro, in quanto questi sono gli errori di arrotondamento: ad esempio 3,33 * 3 = 9,99)

Come posso sommare i valori visualizzati rispetto al gruppo 1 (First(Fields!ShipTotal.Value))? Sto pensando che Scope sia il modo, ma sono perso.

risposta

17

Spesso questa domanda viene richiesta per le versioni precedenti di SSRS, quindi è utile rispondere per una versione recente che supporta la funzionalità necessaria. SSRS 2008R2 ha introdotto il supporto per gli aggregati di aggregati.

Nella tua casella di totale per il report impostare l'espressione di essere:

=SUM(MAX(Fields!ShipTotal.Value, "TrackNo"), "DataSetName") 

Come lei ha ricordato, l'ambito è una parte fondamentale di questo. L'espressione sopra indica che SSRS dovrebbe prendere il primo ShipTotal per ciascun gruppo "TrackNo" e aggiungerli per ogni gruppo TrackNo nel set di dati. (Sostituire il set di dati in nome lì, ovviamente.)

Due altri due metodi per ottenere questo risultato funziona anche nelle versioni precedenti di SSRS così:

  • Usa codice incorporato per keep track of the aggregate.
  • Eseguire i calcoli nella query, restituire il risultato con un set di dati diverso o come un nuovo campo con ogni riga.
+0

funziona in SSRS 2005? Quando ho provato ho l'errore "Le funzioni di aggregazione non possono essere annidate all'interno di altre funzioni di aggregazione". – FistOfFury

+3

No, questa funzionalità è stata aggiunta con SSRS 2008R2. Ci sono alcuni modi per implementarlo nel 2005. Uno dei più comuni è l'uso di codice personalizzato per memorizzare un totale parziale e solo aggiungendolo una volta per gruppo. Qualcosa del genere: http://devshed.us/Blogs/tabid/227/EntryId/552/SSRS-How-to-get-a-running-total.aspx –

+1

Se come me avete bisogno della somma nel footer del gruppo, non è necessario specificare il set di dati: '= Sum (Max (Fields! ShipTotal.Value," TrackNo "))' è sufficiente – Johann

Problemi correlati