sql 连续行中,code相同,ID连续,上下行数值相同的多行,D列取相同数值行最上行的上一行的数值?

用游标一行行算是可以,但200多万条数据要花上几个小时,求省时的方法。谢谢!... 用游标一行行算是可以,但200多万条数据要花上几个小时,求省时的方法。谢谢! 展开
 我来答
鬼谷子教主
2017-01-05 · TA获得超过2496个赞
知道大有可为答主
回答量:1996
采纳率:88%
帮助的人:574万
展开全部

这个比较复杂:(

WITH cte AS ( --找出分组的最小行号
    SELECT *
        ,Min(ID) OVER (PARTITION BY Code, 数值) AS MinID  --添加1列,使用开窗函数
    FROM TableX
)
SELECT ID, Code, 数值
    ,X.数值 AS [D]
FROM cte
--然后关联原表
LEFT JOIN TableX X ON cte.Code = X.Code 
    AND cte.数值 = X.数值
    AND cte.MinID = X.ID + 1
追问

前辈,可能是我没表达清楚,

sql 连续行中,code相同,ID连续,上下行数值相同的多行( 指:  ID连续的上下行  ),D列取相同数值行最上行的上一行的数值?



推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式