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

Mendapatkan nilai maksimal dari baris dan bergabung ke tabel lain

Apa yang Anda tulis tidak memiliki A dalam klausa from sehingga tidak sepenuhnya jelas di mana Anda salah, tetapi ini seharusnya berhasil

select 
       B.Id, 
       B.FileName,
       A.Name
FRom B
     INNER JOIN A
     ON A.id = B.id
    INNER JOIN ( 
          select A.Id, MAX(A.Rank)as ExpertRank 
          from A 
          group by A.Id
     ) as NewA 
    ON a.Id = NewA.ID 
       AND a.Rank = NewA.ExpertRank

Lihat ini berfungsi di sini

Atau Anda bisa menggunakan rownumber sebagai gantinya

WITH CTE AS 
(
   SELECT ID, 
          RANK,
          Name,
          ROW_NUMBER() OVER (PARTITION BY ID ORDER BY RANK DESC) rn
   FROM A
)
SELECT b.Id b.FileName,cte.Name
FROM
   b
   INNER JOIN cte 
   ON b.id = cte.id
      and cte.rn = 1

Lihat itu bekerja di sini



  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 menghasilkan Script untuk Menambahkan Batasan Default ke Kolom di Beberapa Tabel di Database SQL Server - Tutorial SQL Server / TSQL Bagian 94

  2. Cara Mengganti Nama Database di SQL Server - Tutorial SQL Server / TSQL Bagian 26

  3. Gunakan COL_LENGTH() untuk Mendapatkan Panjang Kolom di SQL Server

  4. Gabungkan beberapa baris menjadi satu baris

  5. Risiko tabrakan UUID menggunakan algoritma yang berbeda