Oracle
 sql >> Base de données >  >> RDS >> Oracle

Clause 'In' dans SQL Server avec plusieurs colonnes

Cette syntaxe n'existe pas dans SQL Server. Utilisez une combinaison de And et Or .

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

(Dans ce cas, vous pouvez le raccourcir, car value_type est comparé à la même valeur dans les deux combinaisons. Je voulais juste montrer le modèle qui fonctionne comme IN dans oracle avec plusieurs champs.)

Lorsque vous utilisez IN avec une sous-requête, vous devez la reformuler comme ceci :

Oracle :

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

SQL Server :

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

Il existe d'autres façons de le faire, selon le cas, comme les jointures internes et autres.