sql >> データベース >  >> RDS >> Sqlserver

行から最大値を取得して別のテーブルに結合する

    あなたが書いたものはfrom句に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. SQLSELECTINTOステートメント

    2. Access2022を含むMicrosoftAccessの最新ニュースをチェックしてください!

    3. MySQLの共通テーブル式

    4. mysql、列名を繰り返し処理します