簡體   English   中英

比較SQL Server中的兩個表

[英]Comparing two tables in SQL Server

我在這種形式的SQL Server中有兩個表:

在此處輸入圖片說明

我想在“名稱”列上連接這兩個表(兩個表中都有重復項)。 然后,我想比較“ startNo”列的每一行,並檢查table1.startNo> = table2.startNo,如果是,那么我想添加一個具有表2的UniqueRef的新列。

結果在上面。

重要的是,它檢查表2中每一行的table1.startNo> = table2.startNo,這是我無法弄清楚的部分

您的問題不正確。

根據您的要求

  1. 按名稱列加入
  2. 比較“ startNo”列的每一行,並檢查table1.startNo> = table2.startNo
  3. 重要的是,它檢查表2中的每一行的table1.startNo> = table2.startNo

您給輸出表的第三行提供了不正確的信息。 注意:第一個表中aa3的StartNo為4,並且大於第二個表中bb1或bb2的startNo。 但是您將結果作為bb3對aa3 <-給出了錯誤。

在返回table2的TOP 1 UniqueRef的最后一列中使用相關的子選擇,其中table1.startNo> = table2.startNo

假定所有數字字段均為小數,這將為您提供所需的輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM