我在这种形式的SQL Server中有两个表:
我想在“名称”列中加入这两个表(两个表中都有重复项)。然后,我想比较“startNo”列的每一行,并检查table1.startNo> = table2.startNo是否如此,如果是,我想添加一个带有表2的UniqueRef的新列。
结果如上。
重要的是它检查table1.startNo> = table2.startNo表2中的每一行,这是我无法弄清楚的部分
答案 0 :(得分:1)
你的问题不正确。
根据您的要求
您将第3行的输出表视为不正确。 注意:第一个表中aa3的StartNo是4,它大于第二个表中bb1或bb2的start no。 但你把结果作为bb3反对aa3< - 这是不正确的。
答案 1 :(得分:0)
对返回表2的TOP 1 UniqueRef的最后一列使用相关子选择表table1.startNo> = table2.startNo
答案 2 :(得分:0)
假设所有数字字段都是小数,这将为您提供所需的输出:
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