SQL WHERE.. Cláusula IN varias columnas

Resuelto ala asked hace 15 años • 15 respuestas

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?

ala avatar Jul 16 '09 14:07 ala
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)
mrdenny avatar Jul 16 '2009 07:07 mrdenny

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
sleske avatar Jul 16 '2009 07:07 sleske