Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Получаване на максимална стойност от редове и присъединяване към друга таблица

Това, което сте написали, липсваше A в клаузата от, така че не е съвсем ясно къде сте сбъркали, но това трябва да работи

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

Вижте как работи тук

Като алтернатива можете да използвате номер на ред вместо това

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

Вижте как работи тук



  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 Server

  2. Преименувайте колоната на SQL Server 2008

  3. Как да параметризирам нулев низ с DBNull.Value ясно и бързо

  4. Изпълнение на COUNT SQL функция

  5. Писане на рекурсивна CTE с помощта на Entity Framework Fluent синтаксис или Inline синтаксис