我有这样的查询。我想使用名称为“ A”的列进行过滤。

select 'DummyValue1' as ColumnNameA
  from TableT.


现在我想应用过滤器

select 'DummyValue1' as ColumnNameA
  from TableT
 where ColumnNameA  = "Value1" .


我如何在Oracle中做到这一点。

请在这里注意“ DummyValue1”,因为ColumnNameA实际上不是数据库列。我只是在我的结果集中创建。

最佳答案

由于查询处理的顺序,您不能在WHERE子句中使用别名。但是您可以使用外部选择或CTE进行类似操作

SELECT t.*
  FROM
(
  SELECT 'DummyValue1' as ColumnNameA, ...
    FROM TableT
) t
 WHERE ColumnNameA = 'Value1'


这是SQLFiddle演示

09-25 20:39