Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Filtro parametri SSRS Multiple Value basato sul set di dati

Ho deciso di scrivere il mio commento sulla tua risposta, M.Ali, come risposta alla mia stessa domanda, poiché ho trovato un modo per risolverlo. Forse non ho spiegato il mio problema in modo sufficientemente preciso. Sono consapevole di come funziona quanto sopra e di come passare i parametri in base a un set di dati, attraverso l'SQL per creare un altro set di dati, più valori consentiti o meno. Apprezzo la tua risposta però!

Il problema che ho è che la query che definirebbe il mio elenco di valori per il parametro e la query per il set di dati effettivo sono le stesse. Ed è una domanda ENORME. In altre parole, dove si dice "TABELLA" nell'esempio di codice, ho diverse centinaia di righe di codice. E il mio obiettivo era che l'intera query non definisse entrambi i set di dati. Se in futuro dovessi modificare la query, dovrei farlo in più di un posto. Ecco come ho risolto:

Ho inserito la query principale in un set di dati condiviso invece di incorporarla nel mio report. E poi ho aggiunto una funzione row_number alla mia query in questo modo:

SELECT ID, Value, UserID, rn = ROW_NUMBER() OVER(PARTITION BY UserID ORDER BY UserID)
FROM *my huge query*

Ciò significa che esiste solo una riga 'rn =1' per UserID. Poi sono tornato al mio rapporto. Il mio DataSet1 originale indicherebbe quindi semplicemente il set di dati condiviso. Il DataSet2 (quello del parametro) punterebbe anche al set di dati condiviso con l'unica differenza che ho aggiunto un filtro a quel set di dati dicendo "rn =1". Ho quindi creato un parametro con "consenti valori multipli" che ha preso i suoi valori da DataSet2. E funziona come un incantesimo. In questo modo posso semplicemente andare al set di dati condiviso quando devo aggiornare la query e sia DataSet1 che DataSet2 verranno aggiornati di conseguenza!

Successo :)

Ancora una volta, grazie per la tua risposta!