Sah*_*hil 41 sql sql-server sql-server-2005
我正在验证一个包含电子商务网站的交易级别数据的表格,并找到确切的错误.
我希望您的帮助在SQL Server上的50列表中查找重复记录.
假设我的数据是:
OrderNo shoppername amountpayed city Item
1 Sam 10 A Iphone
1 Sam 10 A Iphone--->>Duplication to be detected
1 Sam 5 A Ipod
2 John 20 B Macbook
3 John 25 B Macbookair
4 Jack 5 A Ipod
Run Code Online (Sandbox Code Playgroud)
假设我使用以下查询:
Select shoppername,count(*) as cnt
from dbo.sales
having count(*) > 1
group by shoppername
Run Code Online (Sandbox Code Playgroud)
会回来的
Sam 2
John 2
Run Code Online (Sandbox Code Playgroud)
但我不想找到重复超过1或2列.我想在我的数据中找到所有列的副本.我希望结果如下:
1 Sam 10 A Iphone
Run Code Online (Sandbox Code Playgroud)
小智 65
with x as (select *,rn = row_number()
over(PARTITION BY OrderNo,item order by OrderNo)
from #temp1)
select * from x
where rn > 1
Run Code Online (Sandbox Code Playgroud)
您可以通过替换select语句来删除重复项
delete x where rn > 1
Run Code Online (Sandbox Code Playgroud)
Eug*_*ene 41
SELECT OrderNo, shoppername, amountPayed, city, item, count(*) as cnt
FROM dbo.sales
GROUP BY OrderNo, shoppername, amountPayed, city, item
HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)
只需将所有字段添加到查询中,并记住将它们也添加到分组依据中。
Select shoppername, a, b, amountpayed, item, count(*) as cnt
from dbo.sales
group by shoppername, a, b, amountpayed, item
having count(*) > 1
Run Code Online (Sandbox Code Playgroud)