希望进行连接,我将一个表连接到另一个表上,例如品牌,并根据我放在另一个表上的排名仅加入到它的第一个记录。下面显示了两个表的简单示例和所需的输出。
由于
Table 1 Table 2
brand serial no brand serial no rank
toyota x1 toyota c4 1
toyota x2 toyota c5 2
toyota x3 toyota c6 3
Desired output
toyota x1 c4
toyota x2 c5
toyota x3 c6
答案 0 :(得分:1)
您可以在子查询中使用ROW_NUMBER
,类似这样。
样本数据;
CREATE TABLE #Table1 (Brand nvarchar(10), Serial_No nvarchar(2))
INSERT INTO #Table1 (Brand, Serial_No)
VALUES
('toyota','x1')
,('toyota','x2')
,('toyota','x3')
CREATE TABLE #Table2 (Brand nvarchar(10), Serial_No nvarchar(2), Rank_No int)
INSERT INTO #Table2 (Brand, Serial_No, Rank_No)
VALUES
('toyota','c4',1)
,('toyota','c5',2)
,('toyota','c6',3)
查询
SELECT
t1.Brand
,t1.Serial_No
,t2.Serial_No
FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY Serial_No) Row_Num
,Brand
,Serial_No
FROM #Table1
) t1
LEFT JOIN #Table2 t2
ON t1.Row_Num = t2.Rank_No
输出
Brand Serial_No Serial_No
toyota x1 c4
toyota x2 c5
toyota x3 c6