首页 > 解决方案 > 当前行为空时使用上一行结果

问题描述

我有一个包含每日交易记录的表,并且某些行缺少数据,这将使绘制每日图表不一致。

在我运行查询之前

我希望查询在当前结果为空时使用最后一行结果,以便它看起来像这样: 在此处输入图像描述

我的表的结构如下所示: 在此处输入图像描述

我已尝试处理此查询以选择前一行并更新当前行(如果它为空但不是动态的)。

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

解决方案


架构(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

在 DB Fiddle 上查看


推荐阅读