2017-06-15 4 views
0

Ich bin neu in SQL und konnte keine Artikel finden, die erklären, wie ich meine Daten filtern muss, um doppelte Tickets aus einem Ticketing-System heraus zu ziehen. Ich muss prüfen, ob ein Geschäft mehrere Tickets in der gleichen Kategorie am selben Datum einreicht. Im Folgenden finden Sie ein Beispiel von dem, mit dem ich arbeite. Jede Hilfe wäre sehr willkommen!Abfrage, um doppelte Daten in mehreren Spalten zu finden

USE [HelpDesk] 
declare 
@date1 date = '5-1-2017', 
@date2 date = '6-2-2017' 

SELECT [SectionName] 
,[CategoryName] 
,[RequesterName] 
,[IssueDate] 
,[StatusId] 
FROM [HelpDesk].[dbo].[uvTESTMasterQueryIssues] 
WHERE [IssueDate] > @date1 AND [IssueDate] < @date2; 

Data and Results

+0

MySQL und SQL Server sind nicht die gleich. Bitte entfernen Sie das RDBMS, das Sie nicht verwenden. –

+0

Fügen Sie eine 'Group By' und' Count (1)> 1' zu Ihrer 'Select' Anweisung hinzu –

+0

Fügen Sie einige Beispieldaten hinzu –

Antwort

0

Es ist eine einfache Abfrage, können Sie Gruppen verwenden, indem Sie ist und zu erreichen, was Sie wollen.

Bitte beachten: https://www.w3schools.com/sql/sql_having.asp

Tisch #temp (

IssueID int, 
SectionName varchar(50), 
CategoryName varchar(50), 
RequesterName varchar(50), 
IssueDate date 

) Einsatz in #temp Werte schaffen (123, 'Wartung', 'Sonstige Alarme', 'Shop 0009550',‘ 2017-05-17 ') Einfügen in #temp-Werte (124,' Wartung ',' Andere Alarme ',' Speichern 0003561 ',' 2017-05-17 ') Einfügen in #temp-Werte (125,' Wartung ' , 'Andere Alarme', 'Speichern 0009550', '2017-05-17') Einfügen in #temp Werte (126, 'Wartung', 'Andere A larms ',' Store 0003561 ',' 2017-05-17 ') in #temp-Werte einfügen (127,' Maintenance ',' Target Move ',' Store 0003561 ',' 2017-05-17 ') einfügen #temp Werte (128, 'Wartung', 'Andere Alarme', 'Speichern 0007426', '2017-05-17') Einfügen in #temp Werte (129, 'Wartung', 'Ziel Verschieben', 'Speichern 0007750' , '2017.05.17'

select * from #temp

declare) @ date1 date = '2017.05.01' declare @ date2 date = '2017.06.02'

; mit cts als ( wählen Sie [CategoryName] , [Issue], RequesterName FROM #temp wobei [Issue] zwischen date1 @ und @ date2 Gruppe von Kategorienamen, [Issue], RequesterName Zählung mit (*)> 1 )

select t. * From #temp t Exklusionsverknüpfung cts ON t.CategoryName = cts.CategoryName und t.IssueDate = cts.IssueDate und t.RequesterName = cts.RequesterName Sortieren nach t.RequesterName, t.IssueID

drop table #temp

+1

Ich weiß, dass du noch nicht 50 bist, um einen Kommentar abzugeben, aber das ist ein Kommentar, keine Antwort. Veröffentlichen Sie eine gültige Antwort des Codes. Nehmen Sie ihren Code und machen Sie es für das gewünschte Ergebnis arbeiten.Sie werden mehr Punkte bekommen. :-) –

1

Ich habe keine Möglichkeit erhalten, es auszuführen oder auszuprobieren, aber es sollte in SQL Server so aussehen:

-- Number of occurrences of Duplicate records 
SELECT [SectionName] 
    ,[CategoryName] 
    ,[RequesterName] 
    ,[IssueDate] 
    ,[StatusId] 
    ,COUNT(*) AS [NUMBER OF OCCURENCES] 
FROM [dbo].[uvTESTMasterQueryIssues] 
WHERE [IssueDate] > @date1 
    AND [IssueDate] < @date2 
GROUP BY [SectionName] 
    ,[CategoryName] 
    ,[RequesterName] 
    ,[IssueDate] 
    ,[StatusId] 
HAVING COUNT(*) > 1 
ORDER BY [SectionName] 
0

Sie doppelte Datensätze finden Gruppe mit durch, Wie, wenn Sie doppelten Datensatz auf Kategorie und requesterName Basis finden wollen, dann unter Abfrage ausführen, wird Ihnen führen:

SELECT [CategoryName] 
,[RequesterName] 
,Count(*) 
FROM [HelpDesk].[dbo].[uvTESTMasterQueryIssues] 
WHERE [IssueDate] > @date1 AND [IssueDate] < @date2 
GROUP BY 
    RequesterName, CategoryName 
HAVING 
    COUNT(*) > 1 
+0

Ihre Gruppe muss alle Spalten enthalten, die nicht aggregiert werden. –

+0

Aber auf diese Weise können Sie die doppelten Datensätze finden, entfernen Sie die anderen nicht benötigten Spalten. Fehle ich etwas, lass es mich wissen, damit ich es besser verstehen kann –

+0

Hast du diesen Code ausgeführt? Dies wird einen Fehler geben. Das ist alles, was ich sage. Wenn Sie eine Antwort vorschlagen, stellen Sie bitte sicher, dass es ohne Fehler läuft. –

Verwandte Themen