可以将结果从一列中取出并转移到两列中吗? 通过将第一个和第二个结果作为开始和结束 其他人也是如此. 我使用了Pivot,但没有得到任何实际效果.

当前结果

 rn old_date_row 

 1   01-JUN-18
 2   null 
 3   null 
 4   null
 5   22-JUN-18
 6   null
 7   null
 8   null
 9   25-JUN-19
 10  null
 11  null
 12  25-JUN-20

预期结果 新表

    start_date      end_date
   01-JUN-18       22-JUN-18    
   25-JUN-19       25-JUN-20

推荐答案

您需要使用row_number()枚举非空行,然后使用round(rid/2)标识连续的行:

select old_date_row, rid, round(rid/2)
from (
  select old_date_row, row_number() over (order by rn) rid
  from mytable t
  where old_date_row is not null
)

结果:

OLD_DATE_ROW    RID ROUND(RID/2)
01-06-18        1   1
22-06-18        2   1
25-06-19        3   2
25-06-20        4   2

最终查询可以是:

select min(old_date_row) as start_date, max(old_date_row) as end_date
from (
  select old_date_row, row_number() over (order by rn) rid
  from mytable t
  where old_date_row is not null
)
group by round(rid/2);

结果:

START_DATE  END_DATE
01-06-18    22-06-18
25-06-19    25-06-20

Demo here

Sql相关问答推荐

Postgresql -如何计算刷卡和刷卡时间

Access 365将文本转换回BigInt

SQL基于多个值 Select 单行

没有循环的SQL更新多个XML node 值

不同表达方式时的大小写

获得第三名或最老的记录

基于多参数的SQL Server条件过滤

如何在Postgres中为单值输入多行?

需要使用SQLite查询进行一些奇怪的时间转换

将SQL Server查询改进为;线程安全;

获取所有用户的第一次和最后一次发货以及到达日期

Postgres存在限制问题「小值」

SQL 多个不满足的条件失败

如何通过CROSS APPLY获取多级嵌套JSON属性的值?

查询以查找今天和昨天的数据之间的差异以及伪列

如何将特定值从 JSON 列中的一个字段移动到 PostgreSQL 中的另一个字段?

PostgreSQL - 从同一张表中获取值

T-SQL 查询计算日期在其他列中定义的日期之间绑定的行数

在给定列中具有特定值的行与 SQL 中的总行数的比率

BigQuery 将一行拆分为多列