sql >> Databáze >  >> RDS >> Sqlserver

Získání maximální hodnoty z řádků a připojení k jiné tabulce

To, co jste napsal, chybělo A v klauzuli from, takže není zcela jasné, kde jste udělali chybu, ale mělo by to fungovat

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

Podívejte se, jak to funguje zde

Případně můžete místo toho použít číslo řádku

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

Podívejte se, jak to funguje zde



  1. PostgreSQL drop omezení s neznámým názvem

  2. SQL Azure:Databáze XXXYYY na serveru momentálně není k dispozici

  3. Návrh databáze pro vícejazyčné aplikace

  4. Nejčastější dotazy o JAVA/JRE v Oracle Apps