Allora, il problema di fondo è che per l'esecuzione della query "esterna" tu hai bisogno di avere che quella "interna" ti restituisca UN SOLO valore (e non un intero recordset).

Immagina ad esempio che la tabella tposizioni abbia un solo record; in questo caso il campo nome avrà un singolo valore, ad esempio "pippo" e tu potrai eseguire la query totale con un ....LIKE %PIPPO%
Ma se ve ne sono molti ....

Potresti, per esempio, utilizzare un cursore che, una volta eseguita la query "interna" la scorra un record alla volta, ed esegua quella esterna con il valore del campo nome preso di volta in volta.

Qualcosa del tipo (vado a memoria...potrebbero esserci degli errori, l'importante è che sia chiaro il principio...)


DECLARE
@NOME_TMP VARCHAR(50) -- variabile temporanea in cui mettere il valore del campo "nome" di ogni record


DECLARE cur_Level CURSOR LOCAL FOR

SELECT NOME FROM TABPOSIZIONI /* selezione del campo "nome" (in linea teorica ottengo molti record e dovrò andare ad analizzarli uno alla volta */


OPEN cur_Level
FETCH NEXT FROM cur_Level INTO @NOME_TMP
/* scorro il recordset ottenuto e metto il valore del campo "nome" nella mia variabile temporanea */

CREATE TABLE #RPI_Temp( ....) /* ti crei qui una tabella temporanea di struttura uguale a quella della tua tabella "indirizzi" in cui inserirai i soli record che soddisfano la tua ricerca in modo che poi li potrai visualizzare con un solo comando */


WHILE @@FETCH_STATUS = 0

BEGIN

INSERT INTO #RPI_Temp
SELECT * FROM TABINDIRIZZI WHERE INDIRIZZO LIKE '%' + @NOME_TMP + '%'

FETCH NEXT FROM cur_Level INTO @NOME_TMP

END

CLOSE cur_Level
DEALLOCATE cur_Level


SELECT * FROM #RPI_Temp /* ti fai visualizzare tutti i record che hai inserito in questa tabella temporanea (sono i soli il cui campo "indirizzo" contiene il campo "nome" della tabella tabposizioni) */

Fammi sapere...