2013-08-13 11 views
5

Ho problemi a trovare un valore per una cella in SSRS, che dovrebbe essere una somma di valori distinti. Ho un rapporto di SSRS che sembra simile alla schermata qui sotto:Tentativo di sommare valori distinti SQL

enter image description here

Sto avendo difficoltà a raggiungere il valore di rosso ($ 11.25). Fondamentalmente ho bisogno di sommare il costo della nave, in base a n. Di tracciamento distinti. Quindi ci sono due distinti inseguitori, uno con un costo di spedizione di $ 5,25 e l'altro di $ 6,00, quindi il totale visualizzato in rosso dovrebbe essere di $ 11,25. Ma non posso ottenerlo in SSRS e non riesco a capirlo nemmeno nella query SQL.

sto pensando una subquery come (e so che il seguito non è valido SQL):

(SELECT SUM([Ship Cost]) WHERE [Tracking #] IS DISTINCT) AS [Ship Cost] 

Ma io non so come scriverlo.

risposta

5

È possibile effettuare le seguenti operazioni:

SELECT SUM(distinct [Ship Cost]) . . . 

Ma, io non consiglio questo. Potresti avere due articoli con lo stesso costo e ne verrà contato uno solo.

Il modo migliore è quello di selezionare un valore per ogni Tracking #, utilizzando la funzione di row_number():

select SUM(case when seqnum = 1 then [Ship Cost] end) 
from (select t.*, 
      row_number() over (partition by [Order #], [Tracking #] 
           order by (select NULL) 
           ) as seqnum 
     . . . 
    ) t 
+0

Ciao @Gordon Linoff, sembra che tu abbia una buona soluzione. Non sono riuscito a ottenere correttamente la query che hai fornito, ma ho eseguito un'operazione simile utilizzando la funzione ROW_NUMBER. Ora ho un nuovo risultato sul mio rapporto. I valori in rosso nello screenshot vengono calcolati utilizzando la seguente espressione in SSRS: = SUM (IIF (Fields! RowNumber.Value = 1, Fields! WEIGHT.Value, 0)) tuttavia, fornisce un errore per quegli ordini con più di 1 oggetto. Non ha ancora senso per me. Sai come è possibile modificare l'espressione in modo che l'output del report sia corretto? –

+1

@ kyle_13. . . Penso che dovresti fare un'altra domanda che fornisca informazioni su dati di esempio e risultati attesi. –

+0

Grazie a @Gordon Linoff, questo è quello che ho finito per fare, ho trovato la soluzione qui http://stackoverflow.com/questions/18236373/expression-in-ssrs-not-working-as-expected. Era un problema di conversione dei dati sul rapporto. –

12

Prendi la lista distinta prima ...

SELECT SUM(SQ.COST) 
FROM 
(SELECT DISTINCT [Tracking #] as TRACK,[Ship Cost] as COST FROM YourTable) SQ 
0

provare qualcosa di simile

 

select sum(shipcost) from 
(select distinct tracking#, shipcost from table) 

evviva