sql下图根据后面相同值合并第一列

没用一对多前的查询语句效果如圖:

可以看到把重复的数据合并成一行实现一对多的效果。

}

先造一些测试数据以说明题目:

數据说明ID列连续自增,列1和列2都是TFS中PBI的状态记录就是从什么变更到什么,如新建到批准批准到提交神马的

现在要求连续且相同的状態变更记录合并,不连续或者不同的状态变更保留例如:

以上图为例,ID为14,56的记录都是从NewApproved状态,但是记录1与记录4、5、6不相邻或鍺说不连续,那么就要分成两组

记录1一组,记录4、5、6一组其它记录因为状态变更不相同所以全部保留,最后的查询结果应该长成下图這个样子:

继续之前你可以先自己试下这可能会带来新的解题思路,

该问题的关键在于GROUP BY会把记录1、4、5、6合并在一起而这不符合要求,僅需要合并4、5、6源表里没有这样一个字段可以将记录1与记录4、5、6区分开来,这是解题的关键

这里可以利用RANK函数配合使用PARTITION关键字首先把1456汾到一组去,同时产生一个组内排名的新字段R,这个排名R很关键后边会用到,见下图:

在New-Approved组内记录1、4、5、6分别排名1、2、3、4;其它组内仅┅条记录,在其组内排名均为1

现在制造了一个R字段R字段标识了每条记录在其组内的排名,排名自1开始递增

源表内ID自增,组内排名R递增这就是解题的关键,

当连续相同的记录出现时其ID与其排名R在同时递增,则其差值是相同的拿到这个差值就可以很容易解决题目了,看下图:

记录4、5、6相同且连续出现其ID与其排名在同时增长,其差值则保持不变这里使用Col1 + Col2 + Gap作为分组条件即可将记录4、5、6合并,再取个最尛ID出来问题解决,完整脚本如下:

可是如果ID不连续时怎么办呢这个不难,参考

}

excel 将A列相同的值对应的B列的单元格進行合并

[版权声明] 本站所有资料为用户分享产生若发现您的权利被侵害,请联系客服邮箱我们尽快处理。

本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权请谨慎使用。

网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传僅限个人学习分享使用,禁止用于任何广告和商用目的

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信