В запросе нет никакой необходимости для inlineview: - если который будет переписан во встроенном виде, он будет выглядеть как
Select Max(Column1)
From (Select Value,Unit From Table1)B,
(Select Value,Unit,Number From Table2)A,
Table3 as H
Where B.Unit=A.Unit
And B.Value=A.Value
AND B.unit=H.unit
And B.Value=H.Value
AND A.number=1234;
Ниже приведен пример, когда использовать встроенный просмотр, надеюсь, эта помощь !!!
Встроенный вид - инструкция SELECT в предложении FROM. Как уже упоминалось в разделе «Вид», представление представляет собой виртуальную таблицу, которая имеет характеристики таблицы, но не содержит никаких реальных данных. В конструкции встроенного представления вместо указания имени (таблиц) таблицы после ключевого слова FROM источник данных на самом деле происходит из представления, созданного в инструкции SQL. Синтаксис для встроенного представления:
SELECT "column_name" FROM (Inline View);
Когда мы должны использовать встроенный просмотр? Ниже приведен пример:
Предположим, у нас есть две таблицы: первая таблица - User_Address, которая отображает каждого пользователя в почтовый индекс; вторая таблица - User_Score, которая записывает все баллы каждого пользователя. Вопрос в том, как написать SQL-запрос, чтобы найти число пользователей, набравших более 200 для каждого почтового индекса?
без использования вложенное, мы можем сделать это в два этапа:
Query 1
CREATE TABLE User_Higher_Than_200
SELECT User_ID, SUM(Score) FROM User_Score
GROUP BY User_ID
HAVING SUM(Score) > 200;
Query 2
SELECT a2.ZIP_CODE, COUNT(a1.User_ID)
FROM User_Higher_Than_200 a1, User_Address a2
WHERE a1.User_ID = a2.ZIP_CODE
GROUP BY a2.ZIP_CODE;
В приведенном выше коде, мы ввели временную таблицу , User_Higher_Than_200, чтобы сохранить список пользователей, набравших более 200. User_Higher_Than_200 затем используется для присоединения к таблице User_Address, чтобы получить окончательный результат.
We can simplify the above SQL using the inline view construct as follows:
Query 3
SELECT a2.ZIP_CODE, COUNT(a1.User_ID)
FROM
(SELECT User_ID, SUM(Score) FROM
User_Score GROUP BY User_ID HAVING SUM(Score) > 200) a1,
User_Address a2
WHERE a1.User_ID = a2.ZIP_CODE
GROUP BY a2.ZIP_CODE;
Есть два преимущества по использованию вложенного представления здесь:
Нам не нужно, чтобы создать временную таблицу. Это не позволяет базе данных иметь слишком много объектов, что хорошо, так как каждый дополнительный объект в базе данных стоит ресурсов для управления.
Мы можем использовать один SQL-запрос для выполнения того, что хотим Обратите внимание, что мы обрабатываем встроенный просмотр точно так же, как мы рассматриваем таблицу. Сравнивая Query 2 и Query 3, мы видим, что единственное отличие заключается в том, что мы заменяем временное имя таблицы в Query 2 оператором inline view в Query 3. Все остальное остается неизменным.
Внутренний вид иногда называют производной таблицей. Эти два термина используются взаимозаменяемо.
Вопрос не совсем ясен. Что случилось с этим вопросом? Что именно вы пытаетесь достичь? – Mureinik
это можно сделать со встроенным видом. как макс поля, подлежащие реструктуризации с условием rownum = 1 – user1954762
Это еще не ясно. У вас нет неагрегатных полей или предложения group-by, так что в любом случае у вас будет только одна строка в результирующем наборе. Измените вопрос, чтобы показать пример с исходными данными, то, что вы получаете сейчас, и то, что вы хотите видеть (и почему). –