0

我有两张表需要加入。我正在尝试将表 (A) 上数字的前两位数字与另一个表 (B) 上列出的一系列数字相匹配。结果将是表 A 的完整记录以及表 B 的看护人。

这些是表格:

表 A:

CREATE TABLE [db].[Annual_Capture](
[id] [int] IDENTITY(1,1) NOT NULL,
[Main_TIN] [char](9),
[MainTaxpayerName] [varchar](20),
[Main_AbstractNumber] [char](3),
[Year] [int] NULL

表 B:

CREATE TABLE [db].[CAREHOLDERS_TIN](
[Care_ID] [int] IDENTITY(1,1) NOT NULL,
[Care_EINStart] [char](2),
[Care_EINEnd] [char](2),
[Care_Owner] [varchar](20)

我不是 SQL Guru,所以尽管无休止地搜索,但我不知道正确的语法。我试图在没有运气的情况下使用以下内容:

Select A.*, B.Care_Owner

FROM db.Annual_Capture as A,
inner join db.CAREHOLDERS_TIN as B
On A.Main_TIN = 
SUBSTRING(A.Main_TIN, 1, 2)>= B.Care_EINStart 
AND SUBSTRING(A.Main_TIN, 1, 2) <= B.Care_EINEnd 

注意:Main_TIN 是 char (9),Care_EINStart/Care_EINEnd 是 char(2)。因此,如果 Main_TIN 是 867530900。我正在寻找分配了 EINStart/Care_EINend 的 CareOwner,例如 80/90。我必须为所有 A.Main_TIN 执行此操作,并将它们与分配的 B.Care_Owners 一起加入。这可能会以存储过程或更可能的视图结束。

如果有人可以提供帮助,非常感谢!

4

1 回答 1

0

请尝试以下方法。我只是提供了正确的语法:

SELECT A.*, B.Care_Owner
FROM db.Annual_Capture AS A
    INNER JOIN db.CAREHOLDERS_TIN AS B
        ON SUBSTRING(A.Main_TIN, 1, 2) >= B.Care_EINStart 
            AND SUBSTRING(A.Main_TIN, 1, 2) <= B.Care_EINEnd
于 2013-11-03T14:03:20.673 回答