Что является эквивалентом 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, поэтому представление должно быть заключено в кавычки.