首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用方程进行查询

使用方程进行查询
EN

Stack Overflow用户
提问于 2015-08-11 07:51:33
回答 2查看 51关注 0票数 2

我有3个查询返回3个值。我想连接查询以执行以下表达式:

代码语言:javascript
复制
(MgO + CaO)/SiO2

我该怎么做呢?

MgO:

代码语言:javascript
复制
SELECT sampled_date, result 
FROM AF_VW WHERE element = 'MgO' AND ROWNUM = 1 ORDER BY sampled_date DESC;

CaO:

代码语言:javascript
复制
SELECT sampled_date, result 
FROM AF_VW WHERE element = 'CaO' AND ROWNUM = 1 ORDER BY sampled_date DESC;

SiO2:

代码语言:javascript
复制
SELECT sampled_date, result 
FROM AF_VW WHERE element = 'SiO2' AND ROWNUM = 1 ORDER BY sampled_date DESC;
EN

回答 2

Stack Overflow用户

发布于 2015-08-11 07:58:20

代码语言:javascript
复制
with x as (
SELECT sampled_date, result, element,
row_number() over(partition by element order by sampled_date desc) rn 
FROM AF_VW)
, y as (
select 
case when element = 'MgO' then result end as MGO,
case when element = 'CaO' then result end as CaO,
case when element = 'SiO2' then result end as SiO2
FROM x where rn = 1)
select (mgo+cao)/sio2 from y; 

您可以使用row_number函数代替rownum,然后选择这3个元素的结果。

票数 2
EN

Stack Overflow用户

发布于 2015-08-11 08:26:01

这对于评论来说有点长了。

您的问题中的查询可能没有执行您预期的操作。Oracle在order by之前计算WHERE子句。因此,下面的代码使用MgO选择一行,然后按日期对一行进行简单的排序:

代码语言:javascript
复制
SELECT sampled_date, result 
FROM AF_VW
WHERE element = 'MgO' AND ROWNUM = 1
ORDER BY sampled_date DESC;

实际上,要获得相同的结果,您需要模拟相同的、不稳定的逻辑。不稳定,因为如果多次运行查询,不能保证结果是相同的:

代码语言:javascript
复制
with mg as (
          SELECT sampled_date, result 
          FROM AF_VW
          WHERE element = 'MgO' AND ROWNUM = 1
         ),
     coa as (
          SELECT sampled_date, result 
          FROM AF_VW
          WHERE element = 'CaO' AND ROWNUM = 1
         ),
     sio2 as (
          SELECT sampled_date, result 
          FROM AF_VW
          WHERE element = 'SiO2' AND ROWNUM = 1
     )
select (mgo.result + cao.result) / sio2.result
from mgo cross join cao cross join sio2;

我怀疑你真的想要最新的样本日期,这就是VKP的答案所提供的。我只是想你应该知道这不是你当前的查询所做的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31930977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档