Ich habe eine gespeicherte Prozedur, die jede Tabelle auf Duplikate überprüfen kann. Sie gibt eine Ergebnismenge mit allen doppelten Zeilen aus der angegebenen Tabelle zurück.Zählen doppelte Datensätze aus einer Tabelle mit gespeicherten Prozedur
Was ich jetzt möchte, ist die Anzahl der Duplikate zu zählen, erhalten Sie den Tabellennamen & Rundate Abfrage und fügen Sie es in eine Tabelle ein.
Das Problem, mit dem ich derzeit konfrontiert bin, ist, dass der SP einen Satz mit einer variablen Anzahl von Spalten zurückgibt. Daher kann ich das Ergebnis des SP nicht in ein vordefiniertes Testable einfügen.
Kennt jemand einen (klüger) Weg, dies zu tun?
Erwartetes Ergebnis
| Tabellenname | Datum | sumDupRows |
SP Ich verwende:
create proc [dbo].[sp_duplicates] @table nvarchar(50) as
declare @query nvarchar(max)
declare @groupby nvarchar(max)
set @groupby = stuff((select ',' + name
FROM sys.columns
WHERE object_id = OBJECT_ID(@table)
FOR xml path('')), 1, 1, '')
set @query = 'select *, count(*) as duplicates
from '[email protected]+'
group by '[email protected]+'
having count(*) > 1'
exec (@query)
GO
Was meinst du MAXDATE? Wenn es Duplikate gibt, haben sie alle dasselbe Datum. Sie würden jede Spalte jeder duplizierten Zeile benötigen. – LoztInSpace
Die Ergebnismenge in JSON oder XML umwandeln und speichern. –
@lotzinspace, korrigiert; max date ist das Laufdatum (ein getdate() wird den Trick machen). – ppijnenburg