sql >> Database >  >> RDS >> Sqlserver

Voeg twee tabellen samen, gebruik alleen de laatste waarde van de rechtertabel

Als SQL Server 2005+

;WITH m AS 
(
   SELECT Partnum, Formula, RevisionNum,
     rn = ROW_NUMBER() OVER (PARTITION BY PartNum ORDER BY 
       CASE WHEN RevisionNum ='New' THEN 1 ELSE 2 END)
     FROM dbo.Material
)
SELECT p.PartNum, m.Formula, m.RevisionNum
FROM dbo.Parts AS p
INNER JOIN m ON p.PartNum = m.PartNum
WHERE m.rn = 1;

Hoewel nieuwsgierig, wat doe je als er meer dan 26 revisies zijn (bijvoorbeeld wat komt na Z )?



  1. sql pdo php waar in variabele

  2. Toewijzing van variabele waarden met behulp van de RETURNING-clausule

  3. Cursor openen voor dynamische tabelnaam in PL/SQL-procedure

  4. Hoe moet ik mijn sql wijzigen om in dit geval te krijgen wat ik wil?