With Cte As ( SELECT f.Code AS FruitCode ,f.FRUIT ,g.Code AS GrainCode ,g.GRAIN FROM ( (SELECT ROW_NUMBER() OVER(PARTITION BY Code ORDER BY Fruit) RowNumber ,Code ,Fruit FROM PLC1_FRUITS) f FULL JOIN (SELECT ROW_NUMBER() OVER(PARTITION BY Code ORDER BY Grain) RowNumber ,Code ,Grain FROM PLC1_GRAINS) g ON f.Code = g.Code AND f.RowNumber = g.RowNumber ) ) SELECT b.Code ,b.Name AS Bird ,c.Grain ,c.Fruit FROM PLC1_BIRDS b LEFT JOIN Cte c ON b.Code = c.FruitCode OR b.Code = c.GrainCode;
Tags: ROW_NUMBER(), FULL JOIN