我在桌面上收集了114个不同的site ID
和numericresult
以及日期。由于我们每月收集数据,因此每个numericresult
有多个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。 请多帮忙。
更新
我已经更新了表格,因为在多个siteID中有相同日期的数字结果。它仍然无法正常工作。 请帮忙!
更新:
查询可以正常使用&#39; June7&#39;提供的sql,但最后它会抛出错误:此子查询可以返回最多一条记录。 我知道我有114个站点ID,其中包含来自2014-2017的不同日期以及日期的数字结果。因此,一个站点ID具有多个collectdate,并且一些站点ID可能具有完全相同的collectdate。所以摆脱错误是一个挑战。 请帮助!
答案 0 :(得分:0)
以Allen Browne subquery basics为指导,请考虑:
objcopy -I binary -O elf32-littlearm myfile.txt myfile.txt.o
建议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 Dupe.CollectDate<GIS_allCL2.CollectDate ORDER BY Dupe.CollectDate DESC)) AS Diff
FROM GIS_allCL2 ORDER BY SiteID, CollectDate;