sql >> Databáze >  >> RDS >> Sqlserver

Mohu použít příkaz CASE ve stavu JOIN?

CASE výraz vrátí hodnotu z THEN část klauzule. Můžete to použít takto:

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

Všimněte si, že s vrácenou hodnotou musíte něco udělat, např. porovnejte to s 1. Váš příkaz se pokusil vrátit hodnotu přiřazení nebo testu rovnosti, přičemž ani jeden z nich nedává smysl v kontextu CASE /THEN doložka. (Pokud BOOLEAN byl datový typ, pak by test rovnosti dával smysl.)



  1. Výukový program MySQL – Průvodce pro začátečníky, jak se naučit MySQL

  2. Jak číst poslední řádek s SQL Server

  3. Obnovte databázi mysql ze souborů .frm

  4. Suma s SQL server RollUP - ale jen poslední shrnutí?