我有两张桌子需要加入。我试图将表(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大师,所以尽管无休止地搜索,我仍然不知道正确的语法。 我试图使用以下但没有运气:
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一起加入。这可能最终会在存储过程中结束,或者更有可能是视图。
如果有人可以提供帮助,我们会感激不尽!
答案 0 :(得分: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