2013-06-03 10 views
5

Per favore perdona il vago titolo di questa domanda. Forse il sotto farà la mia domanda meglio.Generatore di rapporti SQL: ottieni il valore dal gruppo nella tablix

Si consideri la seguente tabella aggregati:

Fruit Units FruitSales% 
----- ----- ----------- 
Apples  10    ? 
Oranges 20    ? 
Bananas 10    ? 
NonFruit 10    ? 

TOTAL  50    ? 

ho bisogno colonna FruitSales% essere: Fruit/(Total - NonFruit)

Se NonFruit è un nome di un prodotto a sé stante, come faccio a ottenere il suo valore per l'uso in altri calcoli nella Tablix?

immagino la mia formula per la FruitSales% è qualcosa di simile:

Sum(Fields!Units.Value)/(ReportItems!txtTotalUnits.Value - SumIf(Fields!Fruit = "NonFruit", Fields!Units.Value) 

Tuttavia, SumIf non esiste e anche se lo facesse, sarebbe specifico per la riga corrente.

E mentre sono qui, ReportItems!txtTotalUnits.Value, ho ovviamente chiamato questa casella di testo, ma c'è un modo più pulito per fare riferimento a questo?

risposta

3

Pronunciare il DataSet sottostante (che ho chiamato FruitDataSet) si presenta così:

enter image description here

ho creato un semplice report in base a questi dati:

enter image description here

L'espressione Vendite frutta% è:

=Sum(IIf(Fields!fruit.Value <> "NonFruit", Fields!units.Value, 0)) 
/Sum(IIf(Fields!fruit.Value <> "NonFruit", Fields!units.Value, 0), "FruitDataSet") 

Questo dà quello che penso sia i risultati corretti:

enter image description here

ci sono due cose da notare circa l'espressione:

  1. Eseguendo il Sum contro un IIf espressione , puoi controllare ciò che viene incluso nei totali - qui sto impostando NonFruit esplicitamente su .

  2. Impostando il Ambito dell'espressione di aggregazione, è possibile ottenere i totali complessivi da utilizzare per elaborare le percentuali totali - nella relazione sto ottenendo un totale utilizzando FruitDataSet e confrontando questo al livello di gruppo totale per ottenere un valore%.

Il modo in cui si fa riferimento al totale della casella di testo è corretto; l'unica altra opzione sarebbe quella di usare un'espressione ogni volta che vuoi il totale - se questo è al di fuori di una Tablix dovresti impostare esplicitamente l'Ambito, ad es. il DataSet.

+1

Grazie mille Ian, è perfetto e così ben spiegato. Apprezzo molto il tempo che hai dedicato a questo! – Warren

Problemi correlati