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
Наконец, вы пометили это как вопрос LEFT JOIN. Если у вас есть более полный пример кода, я уверен, что кто-то предложит альтернативный макет. Но я уезжаю на несколько дней. Удачи! :)
person
MatBailie
schedule
13.02.2012