sql - 如何在 SQL 查询中声明一个常量?

标签 sql oracle oracle11gr2

我正在使用 Oracle 11g R2。有没有办法在同一表达式中的 SQL 查询之前为从表中选择的单个值提供名称(别名)?这是一个单一的 SQL 命令,我的意思是,没有 PL/SQL。

我最接近的是:

WITH
Approved AS (SELECT c.value FROM configuration c WHERE c.code = 'Approved'),
Arrived AS (SELECT c.value FROM configuration c WHERE c.code = 'Arrived'),
Scheduled AS (SELECT c.value FROM configuration c WHERE c.code = 'Scheduled')

SELECT *
FROM list l WHERE l.status_key > (SELECT value FROM Approved);

我正在寻找类似的东西,比如:
WITH
Approved AS CONSTANT (SELECT c.value FROM configuration c WHERE c.code = 'Approved'),
Arrived AS CONSTANT (SELECT c.value FROM configuration c WHERE c.code = 'Arrived'),
Scheduled AS CONSTANT (SELECT c.value FROM configuration c WHERE c.code = 'Scheduled')

SELECT *
FROM list l WHERE l.status_key > Approved;

我不想内联值的 select 语句的原因是我的查询已经足够复杂,如果可能的话,我宁愿去掉一些复杂性。

最佳答案

我有时会使用这样的构造:

WITH const as
      (select max(case when c.code = 'Approved' then c.value end) as Approved,
              max(case when c.code = 'Approved' then c.value end) as Approved,
              max(case when c.code = 'Scheduled' then c.value end) as Scheduled
       from configuration c
      ),
      . . .
SELECT
FROM const cross join
     list l
WHERE status_key > Approved;

有时如果我需要查询中不同地方的常量,那么我必须引入 const CTE不止一次。

关于sql - 如何在 SQL 查询中声明一个常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064900/

相关文章:

java - 无法使用 oracle.apex.APEXExport 类登录数据库

sql - 使用左连接从两个表中选择最小值

php 和 MySQL 初学者接受用户输入、修改数据库并返回值

oracle - 无法从 Windows 服务连接到 Oracle(错误 : ORA-12154: TNS:could not resolve service name (12154) )

c# - ORA-12705 : Cannot access NLS data files or invalid environment specified

java - 根据 OIM 中的自定义属性值搜索用户

c# - 使用外键删除 LINQ 中的记录 - 无效强制转换异常

SQL 加入多个匹配条件

php - 设置 MySQL 和 Oracle 数据库 Mac OS X

sql - 使用绑定(bind)变量动态传递表和列名