mysql - 当前行为空时使用上一行结果
问题描述
我有一个包含每日交易记录的表,并且某些行缺少数据,这将使绘制每日图表不一致。
我希望查询在当前结果为空时使用最后一行结果,以便它看起来像这样:
我已尝试处理此查询以选择前一行并更新当前行(如果它为空但不是动态的)。
SELECT BALANCE
FROM tbl_batch_balances_null
WHERE id =
(select min(id)
from tbl_batch_balances_null where id < '2' and balance is not null)
解决方案
架构(MySQL v5.7)
DROP TABLE IF EXISTS alfie;
CREATE TABLE alfie
(id INT AUTO_INCREMENT PRIMARY KEY,
store CHAR(1) NULL,
product INT NULL
);
INSERT INTO alfie VALUES
( 7,'a',3),
( 8,null,null),
( 9,null,null),
(10,null,null),
(11,'a',1),
(12,'a',1),
(13,'a',1),
(14,null,null),
(15,null,null),
(16,'b',2),
(17,null,null),
(18,null,null),
(19,null,null);
查询 #1
SELECT a.id,
COALESCE(a.store, c.store) store,
COALESCE(a.product,c.product) product
FROM alfie a
LEFT
JOIN
( SELECT x.*,
MAX(y.id) y_id
FROM alfie x
JOIN alfie y
ON y.id < x.id
AND y.store IS NOT NULL
WHERE x.store IS NULL
GROUP
BY x.id
) b
ON b.id = a.id
LEFT
JOIN alfie c
ON c.id = b.y_id
ORDER
BY id;
ID | 店铺 | 产品 |
---|---|---|
7 | 一种 | 3 |
8 | 一种 | 3 |
9 | 一种 | 3 |
10 | 一种 | 3 |
11 | 一种 | 1 |
12 | 一种 | 1 |
13 | 一种 | 1 |
14 | 一种 | 1 |
15 | 一种 | 1 |
16 | b | 2 |
17 | b | 2 |
18 | b | 2 |
19 | b | 2 |
推荐阅读
- c# - 将派生类型的集合作为基类型的集合访问
- regex - 重复的任意捕获组
- excel - 工作表中多个数据范围的第一行和最后一行/第一列和最后一列
- sql - 访问,使用 VBA 自动匹配 2 个记录集之间的记录
- django - Django,在views.py中使用视图集
- java - 如何在缓存的分页结果中添加新对象或更新对象
- reactjs - 使用直接链接访问路由不显示道具 Reactjs?
- swift - 获取 shell 命令的 7zip 等实用程序的完整路径
- ruby-on-rails - 如何使用 rails 对带有“field_for”的嵌套字段进行排序
- excel - 尝试在 2 个不同的工作簿上使用文本到列功能