sql >> Databasteknik >  >> RDS >> Sqlserver

Kan jag använda CASE-satsen i ett JOIN-tillstånd?

Ett CASE uttryck returnerar ett värde från THEN del av klausulen. Du kan använda det så här:

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

Observera att du behöver göra något med det returnerade värdet, t.ex. jämför det med 1. Ditt uttalande försökte returnera värdet av en uppgift eller test för likvärdighet, vilket inte är vettigt i sammanhanget av en CASE /THEN klausul. (Om BOOLEAN var en datatyp så skulle testet för jämlikhet vara vettigt.)



  1. Oracle snabbare sökfråga

  2. MySQL length() vs char_length()

  3. oracle - konvertera många datumformat till ett enda formaterat datum

  4. Dominoernas hemligheter, eller en dominospeldatamodell