Что является эквивалентом Teradata для Oracle DUAL

В Oracle мы можем написать это, чтобы сгенерировать одну строку, используя SELECT заявление.

SELECT 1 AS x FROM dual

Что является эквивалентом Teradata?

1 ответ

Решение

Как правило, такая таблица не нужна

В большинстве случаев в базе данных Teradata таблица не нужна. Ниже приведен действительный SQL (как в H2, PostgreSQL, Redshift, SQL Server, SQLite, Sybase ASE, Sybase SQL Anywhere, Vertica).

SELECT 1
SELECT 1 WHERE 1 = 1

Исключения

Однако есть исключение, когда желательна операция установки. Например, это неверно в Teradata:

SELECT 1 UNION ALL SELECT 2

Получив эту ошибку:

SELECT для UNION,INTERSECT или MINUS должен ссылаться на таблицу.

Но так как FROM предложение, как правило, не является обязательным, очень легко эмулировать DUAL Таблица следующим образом:

SELECT 1 FROM (SELECT 1 AS "DUMMY") AS "DUAL"
UNION ALL 
SELECT 2 FROM (SELECT 1 AS "DUMMY") AS "DUAL"

Совместимость

В случае, если необходимо достичь совместимости с Oracle и т. Д., Легко создать представление, которое ведет себя подобно двойственному Oracle:

CREATE VIEW "DUAL" AS (SELECT 1 AS "DUMMY");

Заметить, что DUAL является ключевым словом в Teradata, поэтому представление должно быть заключено в кавычки.

Другие вопросы по тегам