結合する必要がある 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 と結合する必要があります。これはおそらく、ストアド プロシージャまたはビューで終わる可能性が高いです。
誰かが助けてくれれば大歓迎です!