Oracle
 sql >> Datenbank >  >> RDS >> Oracle

'In'-Klausel in SQL Server mit mehreren Spalten

Diese Syntax ist in SQL Server nicht vorhanden. Verwenden Sie eine Kombination aus And und Or .

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

(In diesem Fall könnten Sie es kürzer machen, da value_type in beiden Kombinationen mit demselben Wert verglichen wird. Ich wollte nur das Muster zeigen, das wie IN in Oracle mit mehreren Feldern funktioniert.)

Wenn Sie IN mit einer Unterabfrage verwenden, müssen Sie es wie folgt umformulieren:

Orakel:

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)

Je nach Fall gibt es andere Möglichkeiten, dies zu tun, z. B. innere Verknüpfungen und dergleichen.