Non mi è molto chiaro quello che vuoi ottenere.
Tu, forse, vorresti utilizzare il CAMPO_C come fosse un elenco di valori da usare nella clausola IN per filtrare i record di TABELLA1 in base a CAMPO_B.
Se la mia interpretazione è corretta dovresti suddividere il contenuto di CAMPO_C in righe utilizzando come carattere separatore la virgola.
Per fare questo, SQL Server mette a disposizione la funzione STRING_SPLIT.
Ti faccio un esempio.
Per prima cosa, creiamo la struttura delle due tabelle ricorrendo, per semplificare le cose, alle variabili di tipo tabella.
declare @TABELLA1 as table
(
Campo_A varchar(50)
, Campo_B varchar(50)
)
insert into @TABELLA1(Campo_A, Campo_B) values
('Pippo', 'Rosso')
, ('Pluto', 'Giallo')
, ('Minnie', 'Nero')
--
declare @TABELLA2 as table
(
Campo_C varchar(50)
)
insert into @TABELLA2(Campo_C) values
('Rosso,Giallo')
Se la tua versione di SQL Server ha il dovuto livello di compatibilità, puoi usare la query seguente che dovrebbe restituire quello che hai chiesto (se ho capito bene quello che desideri).
SELECT *
FROM @TABELLA1
WHERE Campo_B IN (SELECT value FROM @TABELLA2 CROSS APPLY STRING_SPLIT(Campo_C, ','))
Se ho colto il tuo pensiero, ti suggerisco di approfondire le conoscenza su STRING_SPLIT .