首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为access sql查询计算两行之间的差异

为access sql查询计算两行之间的差异
EN

Stack Overflow用户
提问于 2015-05-13 23:25:13
回答 2查看 2.6K关注 0票数 0

我正在尝试创建一个带有新列的查询,其中包含表1中列X的第n行和行n+1之间的差异。

表1

Sample_ID: 1,2,3,4,5

X: 42060,42069,42069,42111,42132

查询1(理想结果)

Sample_ID: 1,2,3,4,5

差异: 0,9,0,42,21

我使用了以下sql。

代码语言:javascript
复制
SELECT [Table1].Sample_ID,[Table1].X - Prev.X AS Diff
FROM [Table1] INNER JOIN [Table1] AS Prev
ON [Table1].Sample_ID -1 = Prev.Sample_ID
WHERE [Table1].Sample_ID > 1

但是,它省略了第一行;因此,我没有获得上面作为查询1表示的结果,而是得到了以下结果。

结果

Sample_ID: 2,3,4,5

差异: 9,0,42,21

如何将第一行(Sample_ID=1)保留为0值?

EN

回答 2

Stack Overflow用户

发布于 2015-05-13 23:32:31

尝尝这个

代码语言:javascript
复制
SELECT [Table1].Sample_ID,[Table1].X - Prev.X AS Diff
  FROM [Table1] 
       INNER JOIN [Table1] AS Prev ON [Table1].Sample_ID -1 = Prev.Sample_ID
 WHERE [Table1].Sample_ID >= 1

它将拾取SampleID 大于或等于1的所有行,或

代码语言:javascript
复制
SELECT [Table1].Sample_ID,[Table1].X - Prev.X AS Diff
  FROM [Table1] 
       INNER JOIN [Table1] AS Prev ON [Table1].Sample_ID -1 = Prev.Sample_ID
 WHERE [Table1].Sample_ID IS NOT NULL

,它将拾取具有a SampleID的所有行。

票数 0
EN

Stack Overflow用户

发布于 2015-05-13 23:36:40

WHERE子句声明Sample_ID >1,因此它永远不会选择第一行。

两种方法是将其更改为Sample_ID >= 1或使用UNION查询。

代码语言:javascript
复制
SELECT [Table1].Sample_ID,[Table1].X AS Diff WHERE Sample_ID = 1
UNION
SELECT [Table1].Sample_ID,[Table1].X - Prev.X AS Diff
  FROM [Table1] 
       INNER JOIN [Table1] AS Prev ON [Table1].Sample_ID -1 = Prev.Sample_ID
 WHERE [Table1].Sample_ID >= 1
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30226817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档