我的餐桌上有114个不同的site ID和numericresult,并收集了日期。在我们每月收集数据时,每个Site ID都有多个Site ID。现在,我试图根据相应的站点ID获得数值结果的差异。
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’在这里。
我想得到的东西是:
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对于负值,我也想用它的绝对值。
我希望能在这方面提供任何帮助。更新:跟踪该站点并查看相同的站点,因为我得到了以下信息:
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可能具有完全相同的收藏日期。因此,消除错误是一个挑战。请帮帮忙!
发布于 2017-07-06 02:49:37
以Allen Browne子查询基础为指南,请考虑:
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:
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;https://stackoverflow.com/questions/44931594
复制相似问题