我有这种形式的SQL Server的两个表:在SQL Server中比较两个表
我想加入这两个表上的“名称”列(其中有重复两的表格)。然后我想比较“startNo”列的每一行并检查table1.startNo> = table2.startNo,如果是这样,我想用表2的UniqueRef添加一个新列。
结果如上。
重要的是,它会检查table1.startNo> = table2.startNo用于表2中的每一行,即我不能找出
我有这种形式的SQL Server的两个表:在SQL Server中比较两个表
我想加入这两个表上的“名称”列(其中有重复两的表格)。然后我想比较“startNo”列的每一行并检查table1.startNo> = table2.startNo,如果是这样,我想用表2的UniqueRef添加一个新列。
结果如上。
重要的是,它会检查table1.startNo> = table2.startNo用于表2中的每一行,即我不能找出
假设所有的字段数是小数,这会给你的输出你想要的:
http://rextester.com/BYVC41019
CREATE TABLE Table1(UniqueRef VARCHAR(5), Name VARCHAR(10), startNo decimal(2, 1), endNo decimal(2, 1));
CREATE TABLE Table2(UniqueRef VARCHAR(5), Name VARCHAR(10), startNo decimal(2, 1), endNo decimal(2, 1));
INSERT INTO Table1(UniqueRef, Name, startNo, endNo)VALUES('aa1', 'name1', 1, 3);
INSERT INTO Table1(UniqueRef, Name, startNo, endNo)VALUES('aa2', 'name1', 2, 5);
INSERT INTO Table1(UniqueRef, Name, startNo, endNo)VALUES('aa3', 'name2', 5.5, 5);
INSERT INTO Table1(UniqueRef, Name, startNo, endNo)VALUES('aa4', 'name2', 1, 2);
INSERT INTO Table2(UniqueRef, Name, startNo, endNo)VALUES('bb1', 'name1', 2, 3);
INSERT INTO Table2(UniqueRef, Name, startNo, endNo)VALUES('bb2', 'name1', 3, 5);
INSERT INTO Table2(UniqueRef, Name, startNo, endNo)VALUES('bb3', 'name2', 5, 6);
INSERT INTO Table2(UniqueRef, Name, startNo, endNo)VALUES('bb4', 'name2', 6, 8);
SELECT
T1.UniqueRef
, T1.Name
, T1.startNo
, T1.endNo
, T2.UniqueRef
FROM Table1 T1
LEFT JOIN Table2 T2
ON T1.Name = T2.Name
AND T1.startNo >= T2.startNo
使用该返回TOP 1的最后一列的相关子选择部分Table2的UniqueRef WHERE the table1.startNo> = table2.startNo
你的问题是不正确的。
根据您的要求
您给出的第3行的输出表为错误的。 注:第一个表中aa3的StartNo为4,大于第二个表中bb1或bb2的开始号。 但是,您给出的结果为bb3针对aa3 < - 这是不正确的。
现在你编辑了帖子。抱歉编辑后发布。 –
我认为@Jake提供的答案会输出问题中提供的结果表。但是,如上所述,它不符合要求3。 要求3 - >重要的是,它检查table1.startNo> = table2.startNo表2中的每一行 –
如果我们将第一个表的aa1和aa2的startno改为3和6,它也会给出不同的行集。请检查 –
请编辑您的帖子,包括样本数据为*以及格式化文本*。通过这种方式可以更轻松地使用数据并重新创建用于测试目的的表。 –
你可以连接这两个表和用例来确定你的UniqueRef列的结果。虽然我没有得到bb1如何在第二排结果。 –
@piyushpankaj @piyushpankaj作为连接将匹配在“名称”列上它将匹配的前两个,它应该然后作为2> = 2它引入uniqueRef bb1 – user33484