无需创建临时/易失性/工作表即可创建隐式数据

时间:2017-12-11 12:56:56

标签: sql teradata

这是可能的:

SELECT 'Bla' AS X

为什么在TeraData中无法做到这一点:

SELECT 'Bla' AS X
        UNION  
SELECT 'DiBla' AS X

有没有办法实现上述目的而无需在TeraData中创建临时/易变/工作表?

PS:

错误是:选择联合,相交或减去必须引用表

2 个答案:

答案 0 :(得分:0)

如果您想在一行上有两列,请使用:

SELECT 'Bla' AS X, 'DiBla' AS Y

如果你想:

X
Bla
DiBla

然后你就做了:

select 'Bla' as X
union all
select 'DiBlah' as X;

如果你想:

X       Y
Bla     NULL
NULL    DiBla

然后:

SELECT 'Bla' as X, NULL as Y
UNION ALL
SELECT NULL as X, 'DiBla' as Y

答案 1 :(得分:0)

您的UNION中有一个属性名称mishmash。您不能在具有不同结构的关系之间执行UNION。因此,请使用

SELECT cast('Bla' as varchar(6)) AS X FROM (SELECT 1 a) t
    UNION  
SELECT cast('DiBla' as varchar(6)) AS X  FROM (SELECT 1 a) t

显式转换确保数据类型与属性名称相同。另一种解决方案可能是

SELECT * FROM
(
  SELECT cast('Bla' as varchar(6)) AS X
) t
UNION  
SELECT * FROM
(
  SELECT cast('DiBla' as varchar(6)) AS X
) t