SQL Server разрешает подзапросы в представлениях. Что вы не можете сделать, это SELECT *
и GROUP BY a, b
Вы пробовали ... (Полагаю, это не весь ваш запрос, поэтому я внесу минимально возможные изменения)
SELECT asset_id, workflow_element_id
FROM
(
SELECT *
FROM asset_status
-- ORDER BY session_id DESC (Removed as innefective in a view)
) tmp
GROUP BY asset_id, workflow_element_id
Кроме того, обратите внимание, что ORDER BY во внутреннем запросе неэффективен (и, возможно, даже не разрешен), так как внешний запрос затем может изменить его порядок (он не будет всегда прийти обратно в другом порядке, но этот макет не гарантирует порядок, который вы, кажется, хотите). Даже во внешнем запросе он может привести к тому, что ваши результаты будут упорядочены при использовании представления, но опять же оптимизатору разрешено переупорядочивать результаты. Если ORDER BY в запросе, использующем представление, порядок никогда не будет абсолютно гарантированным ...
SELECT * FROM view ORDER BY x
Наконец, вы отметили это как вопрос о левом присоединении. Если у вас есть более полный пример кода, я уверен, что кто-то предложит альтернативный макет. Но я ухожу на несколько дней. Удачи! :)