【发布时间】:2020-06-02 03:12:06
【问题描述】:
我有一张如下表:
+-----------+------+--------+
| stockcode | year | equity |
+-----------+------+--------+
| AALI | 2016 | 17347 |
| AALI | 2017 | 18236 |
| AALI | 2018 | 18990 |
| AALI | 2019 | 18521 |
| ABBA | 2016 | 132 |
| ABBA | 2017 | 104 |
| ABBA | 2018 | 203 |
| ABBA | 2019 | 0 |
| ABDA | 2016 | 1232 |
| ABDA | 2017 | 1375 |
| ABDA | 2018 | 1334 |
| ABDA | 2019 | 1254 |
+-----------+------+--------+
我需要一个查询来获取基于去年的股权值。 如果2019年股权的价值=0,则得到2018年的价值。
我尝试过这样,但没有成功(空白页):
SELECT IF(equity <> '0', equity, SELECT equity FROM table_equity WHERE year='2018' AND stockcode='".$stockcode."') as equity FROM table_equity WHERE year='2019' AND stockcode='".$stockcode."'"
但是当我尝试使用这样的代码时,它可以工作:
SELECT IF(equity <> '0', "active", "nonactive") as equity FROM table_equity WHERE year='2019' AND stockcode='".$stockcode."'"
但结果当然不是我想要的
那么怎么做呢?
【问题讨论】:
-
也许只是在
equity不是0的位置按year排序并选择最新的? -
如果一个值为零但没有上一年的值怎么办?如果上一年的值也为零怎么办?
-
@Akina 2018 的价值从不为零
-
为显示的源数据显示所需的输出。
标签: mysql sql-order-by where-clause