/ / Dividi nella stessa tabella - sql, sql-server, reporting-services

Dividi nella stessa tabella - sql, sql-server, reporting-services

Provo a mostrare dalle mie 16 macchine la macchina più alta che ha prodotto la maggior parte dei rifiuti. E dopo molti sforzi ho fatto questo.

Ora devo fare i primi 5 dei più alti problemi. E questi problemi sono elencati nel database nella stessa directory':

Come posso fare questo?

Io uso SQL Server Report Builder.

Non riesco ad aggiungere un'immagine cercherò di farlo in questo modo:

Date                        CounterName                  calculationUnitsInitial
2016-04-26 00:00:00.000 Prod                     6221
2016-04-26 00:00:00.000 Bad                          0
2016-04-26 00:00:00.000 ba           0
2016-04-26 00:00:00.000 ba       0
2016-04-26 00:00:00.000 Ausg     6
2016-04-26 00:00:00.000 Au           0
2016-04-26 00:00:00.000 Bad                          125
2016-04-26 00:00:00.000 Aus                          8
2016-04-26 00:00:00.000 Band position                0
2016-04-26 00:00:00.000 Fe               0
2016-04-26 00:00:00.000 Fe               0
2016-04-26 00:00:00.000 Hu                       124
2016-04-26 00:00:00.000 S                     0
2016-04-26 00:00:00.000 Dr               0
2016-04-26 00:00:00.000 H            4

risposte:

1 per risposta № 1

Quindi abbiamo bisogno di un elenco dei problemi in discesaordine di frequenza per la peggiore macchina operatrice. Ho impostato la tua query molto grande come set di dati e la uso per popolare il valore predefinito di un parametro nascosto chiamato Machine. Avremo anche bisogno di due parametri DateFrom e DateTo con i loro valori predefiniti impostati sull'intervallo di date a cui sei interessato.

Quindi la selezione dei problemi è semplice:

SELECT CounterName, COUNT(*) AS Problems
FROM Problems
WHERE Machine = @Machine
AND ProblemDate >= @DateFrom AND ProblemDate <= @DateTo
GROUP BY CounterName
ORDER BY COUNT(*) DESC

Ora abbiamo una bella lista del numero di ogni tipo di problema per quella macchina in ordine decrescente di occorrenza di problemi. Chiamiamo questo set di dati Problems

Aggiungi una tabella al tuo rapporto con due colonne. La prima colonna avrà l'espressione:

=Fields!Problems.Value / SUM(Fields!Problems.Value, "Problems")

Questo divide il numero di problemi per quel CounterName dall'intero numero di problemi nel set di dati Problemi. Impostare la proprietà Format di quella cella su P1 da visualizzare in percentuale con una cifra decimale.

La seconda colonna è semplicemente il campo CounterName.