【发布时间】:2022-01-22 18:37:35
【问题描述】:
我不太清楚如何描述这种情况,这可能就是我在谷歌上搜索它时遇到困难的原因。我什至不能说,如果这样的事情是可能的。我发现的方向正确的都是window functions,但是我不知道在这种情况下如何应用它。
我有一个看起来像这样的表格(加上一些与问题无关的字段):
CREATE TABLE item (marker VARCHAR(1), free TINYINT(1));
INSERT INTO item VALUES
('A', 1),
('B', 1),
('C', 0),
('D', 1),
('E', 1),
('F', 1),
('G', 0),
('H', 1),
('I', 0),
('J', 0);
我想知道如何编写一个查询(考虑ORDER BY marker)
- 按原样显示带有
free = 0的所有行 - 并将所有连续的行与
free = 1合并到一个行中,其中包含已合并行范围的信息。
所以结果可能是这样的
| marker | last_marker | free |
|---|---|---|
| A | B | 1 |
| C | null | 0 |
| D | F | 1 |
| G | null | 0 |
| H | H | 1 |
| I | null | 0 |
| J | null | 0 |
【问题讨论】: