我有這種形式的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