【发布时间】:2013-10-11 16:15:27
【问题描述】:
我希望你能帮助解决这个问题。我正在使用 Oracle SQL(此视图的 SQL Developer)...
如果我有一个包含以下列的表格:
- A 列(编号)
- B 列(编号)
- C 列(编号)
在我看来我有
Select
ColumnA,
ColumnB,
ColumnA + ColumnB As calccolumn1
现在,我想使用 calccolumn1 但我不能说...
Select
ColumnA,
ColumnB,
ColumnA + ColumnB As calccolumn1
calccolumn1 / ColumnC as calccolumn2
我假设我需要某种类型的子查询......但这就是我需要你帮助的地方...... 我将如何措辞查询,以便我可以在同一查询中的另一个计算中使用 calccolumn1?它可能是 If then 或 Case when,但归根结底是某个派生数字。
【问题讨论】:
-
有理由不做
(ColumnA + ColumnB) / ColumnC As calccolumn2吗? -
我同意......在这个简化的例子中......这会很好。我试图了解如何格式化一个简化示例以应用于更复杂的示例......所以如果 ColumnA 是一个复杂的 Case When 语句和 ColumnB 也是......那么如果我想将它们组合成生成 calccolumn1 并稍后用于 calccolumn2。我是否只需将 A 列的整个 Case 状态放入 () 中,并将 B 列的状态相同并添加它们?
-
@AlexPoole 在同一级别上有复杂的表达式可能很方便。单一定义比在多个地方复制它更容易维护。使用
CROSS APPLY approach是可行的 -
当然,这个问题并没有真正表现出复杂的表情。当被问到这个问题时,我想说交叉应用不可用,但是到那时 12c 已经发布了几个月,我只是不知道......虽然子查询方法也不会重复它。
-
@AlexPoole 内联视图/CTE 方法没有任何问题。我只是想表明,在同一查询级别可以有复杂的表达式作为替代。