Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Cláusula 'In' no SQL Server com várias colunas


Essa sintaxe não existe no SQL Server. Use uma combinação de And e Or .
SELECT * 
FROM <table_name> 
WHERE 
  (value_type = 1 and CODE1 = 'COMM')
  OR (value_type = 1 and CODE1 = 'CORE') 

(Neste caso, você poderia torná-lo mais curto, porque value_type é comparado ao mesmo valor em ambas as combinações. Eu só queria mostrar o padrão que funciona como IN no oracle com vários campos.)

Ao usar IN com uma subconsulta, você precisa reformulá-la assim:

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)

Existem outras maneiras de fazer isso, dependendo do caso, como junções internas e similares.