Ich versuche, die größte Anzahl von Tagen (und die Ausweisnummer des Überprüfers) zu finden, die einen bestimmten Prüfer in einem Workflow genehmigte. Zum Beispiel habe ich eine Tabelle, die mehrere Workflow-Genehmigungsschritte (Übergeber, Manager, Controller, QA) zusammen mit ihren Ausweisnummern und dem Datum ihrer Genehmigung enthält. Die Tabelle heißt "Workflow" und enthält die oben genannten vier Workflowschritte als Datensätze in der Tabelle und die Haupttabelle Design, die eine Eins-zu-viele-Beziehung mit Workflow hat.SQL Server Wählen Sie eine aus mehreren Zeilen basierend auf der Berechnung
Ich versuche festzustellen, wie viele Tage für den längsten Überprüfungsschritt (Anzahl der Tage) und die Badge Nummer des Überprüfers für diesen Schritt (wer hält den Genehmigungs-Workflow, im Grunde). Ich habe versucht, unabhängige Variablen zu setzen, um später verwendet zu werden, aber nicht sicher, wie man die Ausweisnummer auch setzt und ich bin verwirrt. Ich habe versucht, CASE, IIF und COALESCE, aber ich habe kein Glück, weil ich nicht wollen, dass der erste wahre Wert zurückgegeben und dann aufhören, ich möchte es weiterhin alle Schritte zu bewerten. Hier ist ein Beispiel für meine SQL:
declare @managerTime int = 0
declare @controllerTime int = 0
declare @qaTime int = 0
SET @managerTime = (SELECT DATEDIFF(day, manager.BadgeDate, submitter.BadgeDate)
from Design d
left outer join Workflow submitter on (d.DCRId = submitter.DCRId and submitter.RoleName = 'Submitter')
left outer join Workflow manager on (d.DCRId = manager.DCRId and manager.RoleName = 'System Manager')
SET @controllerTime = (SELECT DATEDIFF(day, controller.BadgeDate, manager.BadgeDate)
from Design d
left outer join Workflow manager on (d.DCRId = manager.DCRId and manager.RoleName = 'System Manager')
left outer join Workflow controller on (d.DCRId = controller.DCRId and controller.RoleName = 'DCR Controller')
Können Sie dem ddl einige Testdaten zur Verfügung stellen? – scsimon