【发布时间】:2013-10-31 00:05:52
【问题描述】:
如何使用 MySQL 中的先前值来计算下一个值?我用我蹩脚的英语无法更清楚地解释我的意思(任何人都可以通过看到这篇文章的标题来理解我的问题吗?),所以让我用sn-p解释一下:
select
year_id,
sum(case when event_cd >= 20 then 1 else 0 end) as h,
sum(case when ab_fl = "T" then 1 else 0 end) as ab,
h/ab as ba
from events
group by year_id
在上面的sn-p中,当你运行查询时你会得到错误,因为events表中没有h或ab这样的列。但是,我想使用 h 和 ab,它们是在前面的 sum(case when ~) 语法中计算的。我记得有一些方法可以使它成为可能,但我不记得该怎么做,也不记得我说的那样,由于我的英语不好,我找不到任何相关的帖子来满足我的要求,尽管因为我确定这个问题已经在 SO 上发布了,即使您只是链接它而没有详细说明,它也很有帮助。
谢谢。
[更新]
感谢您的回答。我只是想使用以前的值来避免子查询,从而避免大量冗余输入,并使整个代码更具可读性。正如 Mosty Mostacho 所描述的,我已经使用了两种方法(子查询或编写整个语法两次以计算另一个值),如果这在 MySQL 中使用不可行或风险很大,我当然可以接受上面的这两种方法。很抱歉造成混乱。
【问题讨论】: