sql >> Base de Datos >  >> RDS >> Oracle

Cláusula 'In' en el servidor SQL con varias columnas

Esta sintaxis no existe en SQL Server. Usa una combinación de And y Or .

SELECT * 
FROM <table_name> 
WHERE 
  (value_type = 1 and CODE1 = 'COMM')
  OR (value_type = 1 and CODE1 = 'CORE') 

(En este caso, podría acortarlo, porque value_type se compara con el mismo valor en ambas combinaciones. Solo quería mostrar el patrón que funciona como IN en Oracle con varios campos).

Cuando use IN con una subconsulta, debe reformularla así:

Oráculo:

SELECT * 
FROM foo 
WHERE 
  (value_type, CODE1) IN (
    SELECT type, code 
    FROM bar
    WHERE <some conditions>)

Servidor SQL:

SELECT * 
FROM foo 
WHERE 
  EXISTS (
    SELECT * 
    FROM bar 
    WHERE <some conditions>
      AND foo.type_code = bar.type 
      AND foo.CODE1 = bar.code)

Hay otras formas de hacerlo, según el caso, como uniones internas y similares.