2017-06-15 32 views
0

我是SQL新手,無法找到任何文章來解釋我需要過濾數據以便從票務系統內拉取重複票據的方式。我需要檢查一家商店是否在同一天提交同一類別的多張門票。以下是我正在使用的示例。任何援助將不勝感激!查詢以查找多列中的重複數據

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和SQL服務器不在相同。請刪除您未使用的RDBMS。 –

+0

在你的'Select'語句中添加'Group By'和'Having Count(1)> 1' –

+0

添加som示例數據 – 2017-06-15 14:20:02

回答

0

這是一個簡單的查詢,您可以通過使用組,並具有實現你想要什麼。

請參考:https://www.w3schools.com/sql/sql_having.asp

創建表#TEMP (

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

) INSERT INTO #TEMP值(123, '維修', '其他報警', '儲存0009550',」插入到#temp值(124,'維護','其他報警','存儲0003561','2017-05-17') 插入到#temp值(125,'維護' ,'其他報警','商店0009550','2017-05-17') 插入#temp值(126,'維護','其他A插入到#temp值(127,'維護','目標移動','存儲0003561','2017-05-17') insert into插入到#temp值(129,'維護','目標移動','存儲0007750')的#temp值(128,'維護','其他報警','存儲0007426','2017-05-17') , '2017年5月17日')

SELECT * FROM #TEMP

DECLARE @ DATE1日期= '2017年5月1日' DECLARE @ DATE2日期= '2017年6月2日'

;以cts爲( 選擇 [CategoryName] ,[IssueDate],RequesterName FROM #TEMP WHERE [IssueDate] @ DATE1和,[IssueDate],RequesterName具有COUNT(*)> 1 )

選擇噸之間@ DATE2 組由類別名稱。*從#TEMP噸內部聯接CTS ON t.CategoryName = cts.CategoryName和t.IssueDate = cts.IssueDate和由t.RequesterName t.RequesterName = cts.RequesterName順序,t.IssueID

降表#TEMP

+1

我知道你還沒有達到50評論,但這是一個評論,而不是一個答案。發佈有效的代碼回答。拿他們的代碼,並使其工作達到預期的結果。你會得到更多的分數。 :-) –

1

我沒有機會運行或嘗試它,但它應該是這樣的SQL Server中的東西:

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

可以使用組受,想找到重複的記錄,如果你想找到根據類別和requesterName重複的記錄,然後執行以下查詢會給你造成:

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

您的羣組需要包含所有未彙總的列。 –

+0

但通過這種方式,你可以找到重複的記錄,刪除不需要的其他列。我錯過了什麼,請讓我知道,這樣我就可以更好地理解 –

+0

您是否運行此代碼?這會給出錯誤。這就是我所說的。如果您建議回答,請確保它的運行沒有錯誤。 –