【问题标题】:Joining two tables using a range substring使用范围子字符串连接两个表
【发布时间】:2013-11-14 05:54:11
【问题描述】:

我有两张表需要加入。我正在尝试将表 (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 一起加入。这可能会以存储过程或更可能的视图结束。

如果有人能提供帮助,不胜感激!

【问题讨论】:

    标签: sql sql-server-2005 substring jointable


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      相关资源
      最近更新 更多