首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问中列的行差

访问中列的行差
EN

Stack Overflow用户
提问于 2017-07-05 16:30:34
回答 1查看 69关注 0票数 0

我的餐桌上有114个不同的site IDnumericresult,并收集了日期。在我们每月收集数据时,每个Site ID都有多个Site ID。现在,我试图根据相应的站点ID获得数值结果的差异。

代码语言:javascript
复制
Site ID      CollectDate           NumericResult
1H-1          2/15/2014                 3.2
1H-1          6/22/205                  3.5
2H-4          3/16/2015                 3.0
2H-4          4/20/2014                 2.8
2H-4          2/15/2014                 3.3
1H-11         3/16/2015                 2.9
1H-11         5/12/2016                 3.4

我有大约22000的数据与114个‘网站ID’在这里。

我想得到的东西是:

代码语言:javascript
复制
Site ID                 NumericResult      Diff
1H-1                           3.2          0
1H-1                           3.5          0.3
2H-4                           3.0          0
2H-4                           2.8          0.2
2H-4                           3.3          0.5
1H-11                          2.9          0
1H-11                          3.4          0.5

对于负值,我也想用它的绝对值。

我希望能在这方面提供任何帮助。更新:跟踪该站点并查看相同的站点,因为我得到了以下信息:

代码语言:javascript
复制
SELECT GIS_allCL2.[Site ID], GIS_allCL2.NumericResult, GIS_allCL2.NumericResult-(SELECT TOP 1 NumericResult FROM GIS_allCL2 AS Q 
WHERE GIS_allCL2.[Site ID]=Q.[Site ID]
AND Q.NumericResult < GIS_allCL2.NumericResult
ORDER BY Q.[Site ID] DESC) AS Diff

FROM GIS_allCL2
WHERE
 (SELECT TOP 1 NumericResult FROM GIS_allCL2 AS Q
WHERE GIS_allCL2.[Site ID]=Q.[Site ID] AND Q.NumericResult< GIS_allCL2.NumericResult) Is Not Null

ORDER BY GIS_allCL2.[Site ID], GIS_allCL2.NumericResult;

不起作用:

我的桌子是GIS_allCL2的。请提供更多的帮助。

UPdate:

我已经更新了表,因为在多个siteID中有相同日期的数字结果。它仍然不起作用。请帮帮我!

更新:

查询可以很好地处理'June7‘提供的sql,但是最后它会引发错误:这个SUBQUERY最多可以返回一个记录。我知道我有114个网站ID,不同的日期从2014-2017年和数字结果的日期。因此,一个站点ID具有多个集合,而一些站点ID可能具有完全相同的收藏日期。因此,消除错误是一个挑战。请帮帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 02:49:37

Allen Browne子查询基础为指南,请考虑:

代码语言:javascript
复制
SELECT SiteID, NumericResult, CollectDate, 
Abs(NumericResult-(SELECT TOP 1 Dupe.NumericResult FROM GIS_allCL2 As Dupe WHERE Dupe.SiteID=GIS_allCL2.SiteID AND Dupe.CollectDate<GIS_allCL2.CollectDate ORDER BY Dupe.CollectDate DESC)) AS Diff
FROM GIS_allCL2 ORDER BY SiteID, CollectDate;

建议何时SiteID有多个相同的日期记录。需要一个唯一的记录标识符,例如自动编号字段,这里称为ID:

代码语言:javascript
复制
SELECT SiteID, NumericResult, CollectDate, 
Abs(NumericResult-(SELECT TOP 1 Dupe.NumericResult FROM GIS_allCL2 As Dupe WHERE Dupe.SiteID=GIS_allCL2.SiteID AND Format(Dupe.CollectDate, "yyyymmdd") & Format(Dupe.ID,"0000")<Format(GIS_allCL2.CollectDate,"yyyymmdd") & Format(GIS_allCL2.ID,"0000") ORDER BY Dupe.CollectDate DESC, Dupe.ID DESC)) AS Diff
FROM GIS_allCL2 ORDER BY SiteID, CollectDate, ID;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44931594

复制
相关文章

相似问题

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