Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL तालिका से डुप्लिकेट पंक्तियों को हटाना (एकाधिक स्तंभों के मानों के आधार पर)

नमूना SQL FIDDLE

1) प्रत्येक ग्राहक के लिए ARDivisionNo, CustomerNo के आधार पर अधिकतम शिप कोड मान रिकॉर्ड प्राप्त करने के लिए CTE का उपयोग करें

WITH cte AS (
  SELECT*, 
     row_number() OVER(PARTITION BY ARDivisionNo, CustomerNo ORDER BY ShipToCode desc) AS [rn]
  FROM t
)
Select * from cte WHERE [rn] = 1

2) रिकॉर्ड को हटाने के लिए चयन के बजाय क्वेरी हटाएं का उपयोग करें और जहां क्लॉज को आरएन> 1 में बदलें। नमूना SQL FIDDLE

WITH cte AS (
  SELECT*, 
     row_number() OVER(PARTITION BY ARDivisionNo, CustomerNo ORDER BY ShipToCode desc) AS [rn]
  FROM t
)
Delete from cte WHERE [rn] > 1;

select * from t;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में डेटाबेस स्कीमा का उपयोग करना

  2. SQL सर्वर में sys.sql_dependencies का उपयोग न करें (यह पदावनत है)

  3. SQL सर्वर लेनदेन लॉग फ़ाइल से डेटा पुनर्प्राप्त करने के तरीके

  4. SQL - एक varchar डेटा प्रकार का डेटाटाइम डेटा प्रकार में रूपांतरण के परिणामस्वरूप एक आउट-ऑफ-रेंज मान होता है

  5. SQL सर्वर:दो प्रश्नों के साथ UNION का उपयोग कैसे करें जिसमें दोनों का एक खंड है?