Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Baris Memegang Maksimum Bijaksana Grup dari Kolom Tertentu (cara membunuh duplikat ...)

DECLARE @Data TABLE (ID INTEGER, X INTEGER, Y INTEGER)
INSERT @Data VALUES (1,1,1),(2,1,2),(3,1,2),(4,1,3),(5,1,3),
    (6,2,4),(7,2,5),(8,2,5),(9,2,5),(10,3,1),(11,3,10),(12,3,10)

;WITH CTE AS
(
SELECT ID, X, Y, 
    ROW_NUMBER() OVER(PARTITION BY X ORDER BY Y DESC, ID ASC) AS RowNo
FROM @Data
)

SELECT ID, X, Y FROM CTE WHERE RowNo = 1

Jadi, menggunakan ROW_NUMBER() untuk menetapkan setiap baris nomor tambahan yang diatur ulang ke 1 untuk setiap nilai X baru. Untuk baris dengan nilai X yang sama, nomor baris ditetapkan secara bertahap diurutkan oleh Y DESCENDING dan ID ASCENDING - jadi untuk nilai X tertentu, baris nomor 1 akan ditetapkan ke baris dengan nilai Y TERTINGGI dan nilai ID TERENDAH. Kami kemudian menambahkan batasan untuk hanya mengembalikan yang di mana RowNo adalah 1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memuat file XML hierarkis yang besar (tapi sederhana) ke dalam tabel SQL

  2. kapan kolom yang dihitung akan diperbarui?

  3. kurangi nilai dari dua baris dan masukkan ke dalam kolom baru (bukan baris berikutnya)

  4. Nilai yang Dipisahkan Koma dengan SQL Query

  5. T-SQL Subquery Max (Tanggal) dan Bergabung