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

Buat pengidentifikasi/penghitung berdasarkan beberapa kolom bersama dan pisahkan berdasarkan kolom lain

Gunakan fungsi jendela DENSE_RANK() dengan OVER() klausa:

DECLARE @tbl TABLE(Column1 INT,Column2 INT,Column3 VARCHAR(100));
INSERT INTO @tbl VALUES(1,1,'A')
                      ,(1,2,'A') 
                      ,(1,3,'B') 
                      ,(2,1,'A') 
                      ,(2,2,'A') 
                      ,(2,3,'B') 
                      ,(3,1,'A') 
                      ,(3,2,'B') 
                      ,(3,3,'V');

SELECT *
      ,DENSE_RANK() OVER(PARTITION BY Column1 ORDER BY Column3) AS ComputedColumn
FROM @tbl;

PARTITION BY akan memulai kembali penghitung untuk setiap nilai baru di column1 , sedangkan ORDER BY menentukan peringkat.

Petunjuk:Jangan menempelkan gambar!

Untuk pertanyaan Anda berikutnya, ikuti contoh saya untuk membuat contoh mandiri yang mereproduksi masalah Anda dan menambahkan kode yang telah Anda coba sendiri.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cluster failover SQL Server - tentukan node aktif

  2. Rails &MSSQL 2008 - Akankah Kita Mencapai Hambatan?

  3. Memahami Ukuran Penyimpanan 'datetime2' di SQL Server

  4. Keuntungan menggunakan variabel kursor di SQL Server (deklarasikan kursor @cn)

  5. Apakah mungkin untuk memilih data server sql menggunakan posisi ordinal kolom