SQL怎么做到让同一列数据的特定一行数据减去其他行数据 5

简化的数据表如下:时间地点人123北京A454北京B123广州A454上海C123北京A454上海D我想要将数据表的时间列,比如产生个新列:时间2时间3时间4时间5时间6... 简化的数据表如下:
时间 地点 人
123 北京 A
454 北京 B
123 广州 A
454 上海 C
123 北京 A
454 上海 D
我想要将数据表的时间列,比如产生个新列:
时间2 时间3 时间4 时间5 时间6
null null null null null
331 null null null null
0 -331 null null null
331 0 331 null null
0 -331 0 -331 null
331 0 331 0 331
这个可以用SQL实现吗?(以上的运算是:比如时间2=其他行-第一行,时间3=其他行(除第一第二)-第二行,依此类推)
展开
 我来答
caoyou1986
2019-01-24 · 超过16用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:18.3万
展开全部
---首先我假设你的表名为cssj
select row_number() over (order by (SELECT 0)) as 序号, 时间,NULL 时间2,NULL 时间3,NULL 时间4,NULL 时间5,NULL 时间6 INTO cssj1 from cssj
declare @tmp varchar(50)

declare y_curr cursor for

SELECT 序哗岩扰号 FROM cssj1

open y_curr

fetch next from Y_curr into @tmp

while(@@fetch_status=0)

begin

UPDATE cssj1 SET 时间2= 时间-(SELECT 时间 FROM cssj1 WHERE 序号=1 AND 序号<@tmp),时间3=时间-(SELECT 时间 FROM cssj1 WHERE 序号乱旦=2 AND 序号<@tmp),时间4=时间-(SELECT 时间 FROM cssj1 WHERE 序号=3 AND 序号<@tmp) ,时间5=时间-(SELECT 时间 FROM cssj1 WHERE 序号=4 AND 序号<@tmp) ,时间6=时间-(SELECT 时间 FROM cssj1 WHERE 序号=5 AND 序号<@tmp) WHERE 序号=@tmp
fetch next from y_curr into @tmp
end
close y_curr
deallocate y_curr

SELECT 时间2, 时枣渣间3, 时间4, 时间5, 时间6 FROM cssj1
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式