2017-06-15 51 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

您是否运行此代码?这会给出错误。这就是我所说的。如果您建议回答,请确保它的运行没有错误。 –