在SQL中将一行值移动到另一行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL中将一行值移动到另一行相关的知识,希望对你有一定的参考价值。
我目前有一个像这样的临时表
DBName API50 CounterValue
NULL NULL 1
test1 34.5 NULL
NULL NULL 2
test1 38.5 NULL
我想要一个脚本,它将使我的临时表如下所示
DBName API50 CounterValue
test1 34.5 1
test1 38.5 2
答案
如果您的表具有主键,并且您始终希望将CounterValue字段与表中的下一个字段相关联,则可以执行自联接:
SELECT t1.DBName, t1.API50, t2.CounterValue
FROM MyTable t1 INNER JOIN MyTable t2 ON t1.PrimaryKey -1 = t2.PrimaryKey
WHERE t1.DBName IS NOT NULL
另一答案
我喜欢AHiggins的答案,因为它解决了SQL中可能出现的问题。但是当我读到你的问题时,最初困扰我的是:为什么要在SQL中解决它?看起来数据最初并不是在数据库中创建的,而是以某种方式导入的。如果我是正确的 - 或者如果导出表格,编辑和重新导入 - 是一个选项,那么你可以用正则表达式解决这个问题。所有值得注意的文本编辑都可以为您完成此操作(我使用NotePad ++进行了测试)。
如果表格在文本文件中使用制表工具
作为分隔符,则可以简单地替换所有
NULL NULL (.*)
(.*) (.*) NULL
与2 3 1
。
以上是关于在SQL中将一行值移动到另一行的主要内容,如果未能解决你的问题,请参考以下文章
在 Spark Scala 中将一行从一个数据集添加到另一个数据集
使用相同的主键将值从一行添加到另一行 - Oracle SQL