sql >> Database >  >> RDS >> Sqlserver

Kan ik de CASE-instructie gebruiken in een JOIN-voorwaarde?

Een CASE expressie retourneert een waarde uit de THEN gedeelte van de clausule. Je zou het als volgt kunnen gebruiken:

SELECT  * 
FROM    sys.indexes i 
    JOIN sys.partitions p 
        ON i.index_id = p.index_id  
    JOIN sys.allocation_units a 
        ON CASE 
           WHEN a.type IN (1, 3) AND a.container_id = p.hobt_id THEN 1
           WHEN a.type IN (2) AND a.container_id = p.partition_id THEN 1
           ELSE 0
           END = 1

Merk op dat u iets met de geretourneerde waarde moet doen, b.v. vergelijk het met 1. Uw verklaring probeerde de waarde van een opdracht of test voor gelijkheid te retourneren, die geen van beide logisch zijn in de context van een CASE /THEN clausule. (Als BOOLEAN een datatype was, dan zou de test voor gelijkheid zinvol zijn.)



  1. Wat is een aangepaste runtime-afbeelding in Java 9?

  2. Hoe maak je een gebruiker/database in script voor Docker Postgres

  3. SQL SELECT AVG

  4. Geen gegevens meer om uit socketfout te lezen