• Two possible solutions

    😎

    USE tempdb;

    GO

    SET NOCOUNT ON;

    --- First Create two tables

    IF OBJECT_ID(N'dbo.tabA') IS NOT NULL DROP TABLE dbo.tabA;

    CREATE TABLE dbo.tabA

    (

    cola1 NVARCHAR(100) NULL

    ,cola2 NVARCHAR(100) NULL

    ,cola3 NVARCHAR(100) NULL

    );

    INSERT INTO dbo.tabA (cola1,cola2,cola3)

    VALUES ( NULL, 'A1', 'A2')

    ,( 'A0', NULL, 'A2')

    ,( 'A0', 'A1', NULL)

    ,( 'A0', 'A1', 'A2')

    IF OBJECT_ID(N'dbo.tabB') IS NOT NULL DROP TABLE dbo.tabB;

    CREATE TABLE dbo.tabB

    (

    colb1 NVARCHAR(100) NOT NULL

    ,colb2 NVARCHAR(100) NOT NULL

    ,colb3 NVARCHAR(100) NOT NULL

    ,colb4 NVARCHAR(100) NOT NULL

    );

    INSERT INTO dbo.tabB (colb1,colb2,colb3,colb4)

    VALUES ( 'B1', 'B2', 'B3', 'B4')

    ,( 'A0', 'A1', 'A2', 'THIS IS IT')

    ,( 'C9', 'B2', 'B3', 'B4')

    -- IN THIS CASE THERE IS NO USE ADDING AN INDEX TO tabA, IT WILL NOT BE USED.

    CREATE NONCLUSTERED INDEX NCLIDX_DBO_TABB_COLB1_COLB2_COLB3_INCL_COLB4 ON dbo.tabB (colb1 ASC,colb2 ASC,colb3 ASC) INCLUDE (colb4);

    -- TWO METHODS

    SELECT

    TA.cola1

    ,TA.cola2

    ,TA.cola3

    ,TB.colb1

    ,TB.colb2

    ,TB.colb3

    ,TB.colb4

    FROM dbo.tabA TA

    INNER JOIN dbo.tabB TB

    ON TB.colb1 = ISNULL(TA.cola1,TB.colb1)

    AND TB.colb2 = ISNULL(TA.cola2,TB.colb2)

    AND TB.colb3 = ISNULL(TA.cola3,TB.colb3)

    ;

    ----------------

    SELECT

    TA.cola1

    ,TA.cola2

    ,TA.cola3

    ,TB.colb1

    ,TB.colb2

    ,TB.colb3

    ,TB.colb4

    FROM dbo.tabA TA

    CROSS APPLY dbo.tabB TB

    WHERE CASE WHEN TA.cola1 IS NULL THEN TB.colb1 ELSE TA.cola1 END = TB.colb1

    AND CASE WHEN TA.cola2 IS NULL THEN TB.colb2 ELSE TA.cola2 END = TB.colb2

    AND CASE WHEN TA.cola3 IS NULL THEN TB.colb3 ELSE TA.cola3 END = TB.colb3

    ;

    Results

    cola1 cola2 cola3 colb1 colb2 colb3 colb4

    ------ ------ ------ ------ ------ ------ -----------

    NULL A1 A2 A0 A1 A2 THIS IS IT

    A0 NULL A2 A0 A1 A2 THIS IS IT

    A0 A1 NULL A0 A1 A2 THIS IS IT

    A0 A1 A2 A0 A1 A2 THIS IS IT