0

結合する必要がある 2 つのテーブルがあります。表 (A) の数字の最初の 2 桁を、別の表 (B) に記載されている数字の範囲と一致させようとしています。結果は、テーブル B の介護者を含むテーブル A の全レコードになります。

これらはテーブルです:

表 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_EINEend は char(2) です。したがって、Main_TIN が 867530900 の場合、80/90 のような EINStart/Care_EINEnd が割り当てられた CareOwner を探しています。すべての 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 に答える