Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Мога ли да използвам израз CASE в условие JOIN?

A CASE изразът връща стойност от THEN част от клаузата. Можете да го използвате по следния начин:

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

Имайте предвид, че трябва да направите нещо с върнатата стойност, напр. сравни го с 1. Вашето изявление се опита да върне стойността на задание или тест за равенство, нито едно от които няма смисъл в контекста на CASE /THEN клауза. (Ако BOOLEAN беше тип данни, тогава тестът за равенство би имал смисъл.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Изберете динамично име на колона въз основа на променлива

  2. Какво прави SQL изявлението sargable?

  3. SQL Server BIT Datatype – Крайно ръководство

  4. DATENAME() Примери в SQL Server

  5. XML Server Оптимизация на производителността на XML