Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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,我有一张这样结构的桌子 CREATE TABLE #test ( ID INT IDENTITY, [Value] INT ) 并希望仅使用一个联接运算符来查找当前行和前一行的[Value]之间的差异。 有人能帮我吗 select (t1.value-t2.value) as difference from test t1 join test t2 on t1.id=t2.id-1 若你们的身份证上有漏洞,那个可能是个问题。例如,id=1,2,3,10,11,12 如果您指定

我有一张这样结构的桌子

CREATE TABLE #test
(
    ID INT IDENTITY,
    [Value] INT
)
并希望仅使用一个联接运算符来查找当前行和前一行的[Value]之间的差异。 有人能帮我吗

select (t1.value-t2.value) as difference
from test t1 join test t2 on t1.id=t2.id-1
若你们的身份证上有漏洞,那个可能是个问题。例如,id=1,2,3,10,11,12


如果您指定RDBMC,则可以建议一个更好的解决方案。

对于给定的当前记录,不清楚以前是什么记录。假设在表按ID排序时,前一条记录紧跟在当前记录之前,您只需要分析函数,而不需要连接:


但是,您必须测试您的DBMS是否支持分析功能(MS SQL、Oracle)

您使用的是什么RDBMS?能否请您先试用一下?语法看起来像
t-SQL
,但是您可以发布一些输入和输出吗?
  select [Value] - lag([Value]) over (order by ID)
    from #test