Wie gruppiere ich nach Ergebnis des ursprünglichen Ergebnisses und Rückgabe in einer select Select-Abfrage?Wie gruppiere ich nach Ergebnis des ursprünglichen Ergebnisses und Rückgabe in einer select Select-Abfrage?
Ich habe eine Tabelle #t
mit Bill Id und Fehler es ging durch seinen Workflow-Zyklus. Eine Rechnungs-ID könnte mehrere Male den gleichen Fehlertyp oder einen anderen Fehlertyp durchlaufen haben.
Ich möchte verschiedene Fehlertyp für jede Rechnungs-ID auswählen und erhalten die Gruppe nach Anzahl der Fehler.
Basierend auf verschiedenen Fehlern, Fehleranzahl, muss ich die Anzahl der Fehlertypen und den Fehlertyp in derselben Tabelle abrufen.
Ich bin mir nicht sicher, wie das geht. Ich habe die Beispielabfrage und das erwartete Ergebnis in diesem Beitrag gespeichert.
create table #t
(
BillId int,
StepName varchar(100),
StepExec varchar(100),
StepExecResult varchar(100),
Created_date datetime
)
insert into #t
values
(1, 'Initiated', 'Taken Place','Pass', getdate()-10),
(1, 'POS', 'Deadlock Error','Error', getdate()-9),
(1, 'POS', 'Processed','Pass', getdate()-9),
(1, 'Merchandise', 'Taken Place','Pass', getdate()-8),
(1, 'verification', 'Webservice call error','Error', getdate()-7),
(1, 'verification', 'Webservice call error','Error', getdate()-6),
(1, 'verification', 'Webservice call','Pass', getdate()-5),
(1, 'verification', 'Webservice Response','Error', getdate()-5),
(1, 'verification', 'Webservice Response','Pass', getdate()-5),
(1, 'verification', 'Timeout Error','Error', getdate()-5),
(1, 'verification', 'Timeout Error','Error', getdate()-5),
(1, 'verification', 'Timeout Error','Error', getdate()-5),
(1, 'verification', '','Pass', getdate()-5),
(1, 'Payment', 'calculationError','Error', getdate()-4),
(1, 'Payment', 'calculationProcessed','Pass', getdate()-3),
(1, 'Completed', 'Archived','Pass', getdate()-1),
(2, 'Initiated', 'Taken Place','Pass', getdate()-10),
(2, 'POS', 'Deadlock Error','Error', getdate()-9),
(2, 'POS', 'Processed','Pass', getdate()-9),
(2, 'Merchandise', 'Taken Place','Pass', getdate()-8),
(2, 'verification', 'Webservice call error','Error', getdate()-7),
(2, 'verification', 'Webservice call error','Error', getdate()-6),
(2, 'verification', 'Webservice call','Pass', getdate()-5),
(2, 'verification', 'Webservice Response','Error', getdate()-5),
(2, 'verification', 'Webservice Response','Pass', getdate()-5),
(2, 'verification', '','Pass', getdate()-5),
(2, 'Payment', 'calculationProcessed','Pass', getdate()-3),
(2, 'Completed', 'Archived','Pass', getdate()-1)
select *
from #t
order by Created_date desc
select *
from #t
where StepExecResult = 'Error'
;With cte as
(
select
*,
row_number() over (partition by Billid,StepExec order by StepExecResult) as rownum
from
#t
where
StepExecResult = 'Error'
)
select *
from cte
where rownum = 1
select
stepname, count(*) as ErrorCount
from
#t
where
StepExecResult = 'Error'
group by
stepname
Erwartete Ausgabe
StepName TotalStepError ErrorType ErrorTypeCount
--------------------------------------------------------------
Payment 1 calculationError 1
POS 2 Deadlock Error 2
verification 5 Timeout Error 1
verification 5 Webservice Response 2
verification 5 Webservice call error 2
Danke Jamie. Das ist so hilfreich ..! – goofyui