Join to only the “latest” record with t-sql

前端 未结 7 916
你的背包
你的背包 2020-12-08 08:28

I\'ve got two tables. Table \"B\" has a one to many relationship with Table \"A\", which means that there will be many records in table \"B\" for one record in table \"A\".<

7条回答
  •  南笙
    南笙 (楼主)
    2020-12-08 08:43

    Try using this:

        BEGIN
    
    DECLARE @TB1 AS TABLE (ID INT, NAME VARCHAR(30) )
    DECLARE @TB2 AS TABLE (ID INT, ID_TB1 INT, PRICE DECIMAL(18,2))
    
    INSERT INTO @TB1 (ID, NAME) VALUES (1, 'PRODUCT X')
    INSERT INTO @TB1 (ID, NAME) VALUES (2, 'PRODUCT Y')
    
    INSERT INTO @TB2 (ID, ID_TB1, PRICE) VALUES (1, 1, 3.99)
    INSERT INTO @TB2 (ID, ID_TB1, PRICE) VALUES (2, 1, 4.99)
    INSERT INTO @TB2 (ID, ID_TB1, PRICE) VALUES (3, 1, 5.99)
    
    INSERT INTO @TB2 (ID, ID_TB1, PRICE) VALUES (1, 2, 0.99)
    INSERT INTO @TB2 (ID, ID_TB1, PRICE) VALUES (2, 2, 1.99)
    INSERT INTO @TB2 (ID, ID_TB1, PRICE) VALUES (3, 2, 2.99)
    
    
    SELECT A.ID, A.NAME, B.PRICE
      FROM @TB1 A
      INNER JOIN @TB2 B ON A.ID = B.ID_TB1 AND B.ID = (SELECT MAX(ID) FROM @TB2 WHERE ID_TB1 = A.ID)
    
    
    END
    

提交回复
热议问题