【问题标题】:Oracle SQL return column calculated from existing columns从现有列计算的 Oracle SQL 返回列
【发布时间】:2021-09-07 01:17:47
【问题描述】:
select 
t1.name, 
(select count(*) from t2 where t2.name = t1.name) X, 
(select count(*) from t3 where t3.name = t1.name) Y
from t1;

我有上面的 SQL 查询,它返回列名 X 和 Y。我想再返回一列(我们称之为 Z),它给出 X/Y 的值,但不太确定如何执行此操作 -我尝试写 (X/Y) Z 但没有运气 - 有什么建议吗?

【问题讨论】:

  • Oracle 的哪个版本?除了 CTE 或内联视图,在最近的版本中,您还可以cross apply
  • oracle版本为12.0.1

标签: sql oracle


【解决方案1】:
  • 使用 CTE
with data as (

select 
t1.name, 
(select count(*) from t2 where t2.name = t1.name) X, 
(select count(*) from t3 where t3.name = t1.name) Y
from t1
)

select 
data.*,
data.x/data.y as new_calculation
from data

【讨论】:

  • 你的查询有问题,有计数的那个
  • 这真的很奇怪
  • 它会给你错误的行号吗?
  • 如果您有其他列/表达式,则不能将它们与普通的 * 混合使用;所以你需要 select data.*, x/y as ... from data 作为 CTE 后查询。
  • 在雪花中工作,但感谢发现
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 2011-06-11
  • 1970-01-01
相关资源
最近更新 更多