2016-04-26 9 views
2

Ich versuche, von meinen 16 Maschinen die höchste Maschine zu zeigen, die den meisten Abfall produzierte. Und nach vielen Bemühungen habe ich das getan.Teilen Sie in der gleichen Tabelle

Jetzt muss ich die Top 5 der höchsten Probleme tun. Und diese Probleme sind in der Datenbank im selben Verzeichnis aufgeführt:

Wie kann ich das tun?

Ich benutze SQL Server Report Builder.

Ich kann kein Bild hinzufügen, ich werde versuchen, es zu tun, so:

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 
+0

Können Sie uns die Tabellenstrukturen geben, mit denen Sie arbeiten, dann können wir Ihnen viel besser helfen. –

+0

Ja sicher werde ich es tun. –

+1

Ich habe meine Frage jetzt bearbeitet –

Antwort

1

Also brauchen wir eine Liste der Probleme in der schlimmsten Arbeitsmaschine der Reihenfolge der Häufigkeit absteigend. Ich würde Ihre wirklich große Abfrage als eine Datenmenge einrichten und diese verwenden, um den Standardwert eines versteckten Parameters namens Machine aufzufüllen. Wir müssen auch zwei Parameter DateFrom und DateTo mit ihren Standardwerten auf den Datumsbereich Sie interessiert sind

Dann wird Ihr Problem Auswahl ist einfach:.

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

Jetzt haben wir eine schöne Liste der Zahl haben jeder Art von Problem für diese Maschine in absteigender Reihenfolge des Auftretens von Problemen. Lassen Sie uns diesen Datensatz aufrufen Problems

Fügen Sie Ihrem Bericht eine Tabelle mit zwei Spalten hinzu. In der ersten Spalte wird der Ausdruck haben:

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

Dadurch wird die Reihe von Problemen für die Counter durch die ganze Reihe von Problemen in der Datenmenge Probleme teilt. Legen Sie die Format-Eigenschaft dieser Zelle auf P1 fest, um als Prozentsatz mit einer Dezimalstelle anzuzeigen. Die zweite Spalte ist einfach das Feld CounterName.

+0

Vielen Dank für Ihre Hilfe. Ich werde es versuchen –

Verwandte Themen