Могу ли я использовать оператор CASE в условии JOIN?

Следующее изображение является частью Microsoft SQL Server 2008 R2 System Views. Из изображения видно, что соотношение между sys.partitionsи sys.allocation_unitsзависит от значения sys.allocation_units.type. Поэтому, чтобы соединить их вместе, я бы написал что-то похожее на это:

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)
                   THEN a.container_id = p.hobt_id 
               WHEN a.type IN (2)
                   THEN a.container_id = p.partition_id
               END 

Но верхний код дает синтаксическую ошибку. Я думаю, это из-за утверждения CASE. Может ли кто-нибудь помочь объяснить немного?


Добавить сообщение об ошибке:

Сообщение 102, уровень 15, состояние 1, строка 6 Неверный синтаксис рядом с '='.

this is the image

118
задан thepurpleowl 2 July 2019 в 13:15
поделиться