Соединить результаты запроса, не используя UNION

У меня есть запрос:


SELECT TOP (20)
    ValueTable.Id id,
    ValueTable.RecordTime recordtime,
    NamesTable.FullName fullname

FROM 
    DB.ValueTable ValueTable
    JOIN
    (
        SELECT ID, FullName
        FROM FullNamesTable1

        UNION ALL

        SELECT ID, FullName
        FROM FullNamesTable2
    ) NamesTable
    ON ValueTable.ID = NamesTable.ID

WHERE
    id > 8000

ORDER BY recordtime DESC

Проблема в том, что тот sql, который используется на сервере, очень старый/странный, и он не умеет использовать UNION внутри подзапроса.

То есть, запрос

SELECT ID, FullName
FROM FullNamesTable1

UNION ALL

SELECT ID, FullName
FROM FullNamesTable2

вполне рабочий, и выдаст значения, но внутри оператора FROM он уже не умеет понимать данный оператор. Как можно конкатинировать две одинаковые таблицы иным способом? WITH и #TempTable не помогут по той же причине отсталости sql.

UPDATE:

Запрос без UNION тоже полностью рабочий:


SELECT TOP (20)
    ValueTable.Id id,
    ValueTable.RecordTime recordtime,
    NamesTable.FullName fullname

FROM 
    DB.ValueTable ValueTable
    JOIN
    (
        SELECT ID, FullName
        FROM FullNamesTable1
    ) NamesTable
    ON ValueTable.ID = NamesTable.ID

WHERE
    id > 8000

ORDER BY recordtime DESC

Версию sql я не могу узнать, знаю лишь то, что это сервер со SCADA. В других подобных запросах проблема решалась таким образом, что все UNION выносились наверх, но, мне кажется, это не самое правильное решение:


(
    SELECT TOP (20)
        ValueTable.Id id,
        ValueTable.RecordTime recordtime,
        NamesTable.FullName fullname

    FROM 
        DB.ValueTable ValueTable
    JOIN
        FullNamesTable1 NamesTable
        ON ValueTable.ID = NamesTable.ID

    WHERE
        id > 8000

    ORDER BY recordtime DESC

) UNION All (

    SELECT TOP (20)
        ValueTable.Id id,
        ValueTable.RecordTime recordtime,
        NamesTable.FullName fullname

    FROM 
        DB.ValueTable ValueTable
    JOIN
        FullNamesTable2 NamesTable
        ON ValueTable.ID = NamesTable.ID

    WHERE
        id > 8000

    ORDER BY recordtime DESC
) 

Ответы (0 шт):