如何按条件将SQL列拆分为两列并生成连续结果视图
解决方案
要实现将原表的id列拆分为id1(存放小于3的id值)和id2(存放剩余id值)的视图,且保证结果连续,可以借助窗口函数ROW_NUMBER()来分组编号后关联,具体SQL语句如下:
CREATE VIEW split_id_view AS WITH id1_group AS ( SELECT id AS id1, ROW_NUMBER() OVER (ORDER BY id) AS rn FROM your_table WHERE id < 3 ), id2_group AS ( SELECT id AS id2, ROW_NUMBER() OVER (ORDER BY id) AS rn FROM your_table WHERE id >= 3 ) SELECT id1, id2 FROM id1_group JOIN id2_group ON id1_group.rn = id2_group.rn;
逻辑说明
- 先用两个CTE分别筛选出符合条件的两组id:
id1_group:筛选id < 3的记录,并用ROW_NUMBER()按id排序生成行号rnid2_group:筛选id >= 3的记录,同样按id排序生成行号rn
- 通过行号
rn将两组数据关联,确保id1和id2按顺序一一对应,最终得到连续的结果。
内容的提问来源于stack exchange,提问作者pookeeshtron
相关产品推荐
相关产品推荐

