Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 同一表和同一列中的行操作_Sql - Fatal编程技术网

Sql 同一表和同一列中的行操作

Sql 同一表和同一列中的行操作,sql,Sql,我有一个小问题要讨论,希望你能轻松些。 假设表A有两列,如下所示: item price milk 25 milk 50 milk 100 Butter 25 Butter 100 Butter 200 现在,我想将从表a派生的表B显示为 item price growth rate milk 0 milk 10

我有一个小问题要讨论,希望你能轻松些。 假设表A有两列,如下所示:

item          price
milk           25
milk           50
milk           100
Butter         25
Butter         100
Butter         200
现在,我想将从表a派生的表B显示为

item          price growth rate
milk           0
milk           100
milk           100
Butter        100
Butter         200
Butter         100
第1行的增长率公式为

((row[1]-row[0])/row[0])*100
eg for 1st row ((50-25)/25)*100

你能为它推荐一个SQl查询吗?

你的主要技巧是编写SQl,在一行中获得两个连续的行

根据服务器的不同,有几种方法可以做到这一点

例如,您可以将一个查询中的每一行连接到子查询,子查询将得到第一行,该行的值低于当前行中的值

要获得所需的结果,还需要使用一个将空值转换为0的函数


注意:结果第4行中的示例列出了增长率100;这与第一行中的示例不一致。

sql server/Mysql/Oracle?另外,是否还有一列指示顺序?或者从哪个顺序可以推断出来?听起来好像有人在尝试简单的方法来完成一些家庭作业。谢谢!但我找不到合适的t sql,因为如果我对同一个表使用内部联接,则第一行会对第二部分的行重复;在SQL中连接连续行的方法是删减不需要的结果(例如具有相同值的某个唯一键的行,并且还将结果限制为剩余记录的第一个)。正如我所说的,如果您需要帮助更好地显示表的结构(列出表名、主键和用于建立顺序的列,再加上修复示例,这是不明确的)