sql >> Database teknologi >  >> RDS >> Sqlserver

Kan jeg bruge CASE-erklæringen i en JOIN-tilstand?

En CASE udtryk returnerer en værdi fra THEN del af klausulen. Du kan bruge det på denne måde:

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

Bemærk, at du skal gøre noget med den returnerede værdi, f.eks. sammenlign det med 1. Dit udsagn forsøgte at returnere værdien af ​​en opgave eller prøve for lighed, hvoraf ingen af ​​dem giver mening i sammenhæng med en CASE /THEN klausul. (Hvis BOOLEAN var en datatype, så ville testen for lighed give mening.)



  1. MariaDB Backup &PostgreSQL i skyen - ClusterControl Release 1.6.1

  2. SQLite - Opret et forhold

  3. MySQL Performance – Langsom forespørgsel og innodb_buffer_pool_size

  4. Aktivering af to-faktor-godkendelse for ScaleGrid DBaaS