SQL WHERE.. Cláusula IN varias columnas
Necesito implementar la siguiente consulta en SQL Server:
select *
from table1
WHERE (CM_PLAN_ID,Individual_ID)
IN
(
Select CM_PLAN_ID, Individual_ID
From CRM_VCM_CURRENT_LEAD_STATUS
Where Lead_Key = :_Lead_Key
)
Pero la cláusula WHERE..IN permite solo 1 columna. ¿Cómo puedo comparar 2 o más columnas con otro SELECT interno?
Aceptado
En su lugar, querrás utilizar la sintaxis WHERE EXISTS.
SELECT *
FROM table1
WHERE EXISTS (SELECT *
FROM table2
WHERE Lead_Key = @Lead_Key
AND table1.CM_PLAN_ID = table2.CM_PLAN_ID
AND table1.Individual_ID = table2.Individual_ID)
Puede crear una tabla derivada a partir de la subconsulta y unir la tabla1 a esta tabla derivada:
select * from table1 LEFT JOIN
(
Select CM_PLAN_ID, Individual_ID
From CRM_VCM_CURRENT_LEAD_STATUS
Where Lead_Key = :_Lead_Key
) table2
ON
table1.CM_PLAN_ID=table2.CM_PLAN_ID
AND table1.Individual=table2.Individual
WHERE table2.CM_PLAN_ID IS NOT NULL